许多人注意到zxing在最新的
xcode(4.5 / ios 6)中不起作用
这里是用例:
- checkout latest version from trunk (as some fixes were already added)
- create single view application in xcode 4.5 with ios 6.0
- use README to add dependencies,paths etc (just follow step by step)
- add zxingcontroller call to class (renamed to mm)
Undefined symbols for architecture i386: "std::string::c_str() const",referenced from
可能有人知道如何用这个用例来解决它?
附:如果你有从以前的Xcode的应用程序,它的工作.只有在Xcode 4.5中创建新的应用程序时才会出现问题
解决方法
你遇到的问题似乎是C标准库相关的.
实际上,每当看到与标准库对象(例如std :: string)关联的链接器故障时,您应该检查所有链接库和应用程序本身的项目设置.他们通常需要匹配!
原始的ScanTest(将ZXingWidget构建为子项目)使用以下设置,如果您使用库,则需要匹配您的App构建设置.
为了确保,我使用Xcode 4.5创建了一个全新的项目.该项目使用ZXingWidget作为预构建库,但不作为子项目 – 我不喜欢不是我自己的东西的子项目 – 尽管这个专长不会影响结果.
重要的设置是C标准库 – 确保设置为编译器默认值
几点澄清
实际上,您不需要使用C标准库,您也可以使用支持C11的LLVM C标准库.但是,您必须在与项目链接的所有项目,子项目和库中使用完全相同的库.所以如果你坚持使用最新版本的库(C 11支持),那么你也必须用这些设置来构建ZXing库.
最后但并非最不重要的是,请确保您的架构和有效架构设置与所有项目和子项目匹配(修复常见的armv7s链接器问题).
首先,确保您的架构设置设置为所有项目中的armv7 armv7s.然后编辑所有项目的项目设置到有效架构armv7s armv7.