我想要做什么
在我的 iPhone 项目中集成Zxing二维码阅读器框架。我从这里查看了 ZXing sdk 。我运行了 ZXing 附带的名为 ScanTest 的示例项目,没有任何问题。但是当我尝试将库与我的项目集成时,我得到了提到的错误。
项目规范
- 目标操作系统:iOS 6.0
- 部署目标:iOS 5.0 或以上。
- 测试:iPhone 4 和 iPhone 3GS。
- Xcode:Xcode 4.5.1
- ZXing版本:2.0
问题
当我构建时,在ZXing 自述文件中执行了每个集成步骤后,我都会遇到构建错误,例如
Undefined symbols for architecture armv7:
"std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
zxing::qrcode::Detector::computeDimension(zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, float) in libZXingWidget.a(Detector-B8B28E953F840D47.o)
Undefined symbols for architecture armv7:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
zxing::Exception::Exception(char const*) in libZXingWidget.a(Exception.o)
zxing::common::StringUtils::guessEncoding(unsigned char*, int, std::map<unsigned int, std::string, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::string> > >
有27个这样的错误..我只复制了前两个。
我发现了什么
好吧,我经历了这个,这个,这个,这个,这个,这个,这个,这个stackoverflow中的线程,都带有相同的错误消息。没有一个解决方案对我有用。
然后我在 ZXing 论坛上发现了这个封闭的帖子,讨论了同样的问题。从那次讨论中,一些可能的解决方案(对某些人有效)
第一个错误是(可能)因为您没有将 main.m 重命名为 main.mm。第二个错误是(可能)因为您没有链接到小部件库
我还重命名了我的 main.m,交叉检查了我是否添加了库,只是发现我确实有。所以事实并非如此。
在我将库的体系结构更改为“标准(armv7,armv7s)”以匹配我的主要项目后,我能够成功编译应用程序。
我的项目、目标、库项目(用于调试、分发、发布)架构为Standard (armv7, armv7s)
. 所以那里也没有运气。
然后他们关闭了这个问题,
zxing 项目已更新为添加 armv7s 架构并删除 armv6 架构。这些更改是 (1) 为 armv7s 的 iPhone 5 构建和 (2) 构建所必需的,因为 Xcode 4.5 不包括对 armv6 的支持。如果您有自己的项目文件,则需要自己进行这些更改。这些是并非特定于 zxing 的一般更改,因此如果您遇到问题,您可以在 StackOverflow 等一般论坛中获得更多/更快的帮助。
所以我在这里,在 StackOverflow 中。
还有一点
在 ZXing 集成README 文件中,集成的第一步是,
1) 在“ ”下找到“ZXingWidget.xcodeproj”文件
zxing/iphone/ZXingWidget/
。将 ZXingWidget.xcodeproj 拖放到 Xcode 项目的“组和文件”侧边栏的根目录下。将出现一个对话框——确保在单击“添加”之前未选中“复制项目”并且“参考类型”为“相对于项目”。或者,您可以右键单击项目导航器并选择“将文件添加到“MyProject””。
当我将 ZXingWidget.xcodeproj 文件拖到我的项目中时,没有对话框。该项目直接添加到项目中,我无法设置“复制项目”和“引用类型”属性。不知道是Xcode 4.5的新特性还是bug。根据 README 文件,这是我无法正确遵循的唯一步骤。
好吧,你拥有我所拥有的所有信息。我一直试图解决这个问题 6 个小时。任何的想法?