zxing在xcode 4.5和ios 6

许多人注意到zxing在最新的 xcode(4.5 / ios 6)中不起作用

这里是用例:

  1. checkout latest version from trunk (as some fixes were already added)
  2. create single view application in xcode 4.5 with ios 6.0
  3. use README to add dependencies,paths etc (just follow step by step)
  4. add zxingcontroller call to class (renamed to mm)

对于模拟器和设备,编译失败
显示31错误像这样:

Undefined symbols for architecture i386:
  "std::string::c_str() const",referenced from

所有31个错误都是相似的,区别在于符号名称

可能有人知道如何用这个用例来解决它?

附:如果你有从以前的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.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...