zxing在xcode 4.5和ios 6中

Ala*_*per 12 xcode zxing ios

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

这是用例:

  1. 从trunk查看最新版本(因为已经添加了一些修复)
  2. 使用ios 6.0在xcode 4.5中创建单个视图应用程序
  3. 使用README添加依赖项,路径等(只需按步骤操作)
  4. 添加zxingcontroller调用类(重命名为mm)

模拟器和设备的编译都失败它显示31错误,如下所示:

Undefined symbols for architecture i386:
  "std::string::c_str() const", referenced from
Run Code Online (Sandbox Code Playgroud)

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

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

ps如果你有以前的Xcode的应用程序,它的工作原理.只有在Xcode 4.5中创建新应用程序时才会出现问题

Til*_*ill 32

您遇到的问题似乎与C++标准库有关.

实际上,每当您看到链接器与标准库对象(例如std::string)的关系失败时,您应该检查所有链接库和应用程序项目本身的项目设置.他们通常需要匹配!

原始ScanTest(将ZXingWidget构建为子项目)使用以下设置,如果您按原样使用库,则需要匹配您的App构建设置.

为了确保,我使用Xcode 4.5创建了一个全新的项目.该项目使用ZXingWidget作为预建库但不是作为子项目 - 我不喜欢子项目的东西不是我自己的 - 虽然这个专业不会影响结果.

重要的设置是C++标准库 - 确保将其设置为Compiler Default

在此输入图像描述


澄清一点

实际上,您不需要使用C++标准库,您也可以使用支持C++ 11的LLVM C++标准库.但是,您必须在与项目链接的所有项目,子项目和库中使用完全相同的库.因此,如果您坚持使用该库的更新版本(C++ 11支持),那么您还必须使用这些设置构建ZXing库.


最后但并非最不重要的是,确保您的架构有效架构设置匹配所有项目和子项目(修复常见的armv7s链接器问题).

首先,确保您的架构设置armv7 armv7s在所有项目中设置.然后还将所有项目的项目设置编辑为Valid Architecture armv7s armv7.

在此输入图像描述

  • 这对模拟器有好处; 但是在构建设备时仍然存在问题:架构armv7s的未定义符号:"_ OBJC_CLASS _ $ _ ZXingWidgetController",引用自 (4认同)