我有一个使用 zbar-sdk(条形码扫描库)的项目。
将我的机器更新到 xcode 4.5 和 ios6sdk 后,我遇到了一些麻烦。
我能够在不涉及我的项目的任何内容的情况下构建到模拟器。这是使用最新的 zbar 1.2 库。
然后我想构建到我的 ios6 设备进行测试,这就是我遇到错误的时候。
在 zbar 开发人员论坛上进行了一些谷歌搜索后,我发现我需要获取 zbar 源代码并为 armv7 和 armv7s 构建 libzbar.a,因为 zbar 开发人员尚未完成这项工作。
见 - http://sourceforge.net/projects/zbar/forums/forum/1072195/topic/5728912
所以我这样做了,将更新后的 libzbar.a 重新导入到我的项目中。然后我为我的设备构建,它工作!我能够将我的应用程序放到我的测试设备上,并且 zbar 条形码库运行良好。
我以为事情就这样结束了,可惜没有。
然后我尝试再次构建到模拟器(ios6),这就是它失败的时候。
无论如何,我都无法同时使用相同的设置为设备和模拟器构建这个项目:(
构建我自己的 libzbar.a 文件时我的 libzbar.a 项目设置:
架构:标准(armv7,armv7s)$(ARCHS_STANDARD_32_BIT)
仅构建活动架构:否
有效架构:armv7 armv7s
我的项目设置(对于myapp)为:
架构:标准(armv7,armv7s)$(ARCHS_STANDARD_32_BIT)
仅构建活动架构:否
有效架构:armv7 armv7s
基础 SDK:iOS6
iOS 部署目标:iOS 5.0
以及尝试构建到模拟器时的错误:
ld: warning: ignoring file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a, missing required architecture i386 in file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ZBarReaderViewController", referenced from:
objc-class-ref in mycontroller.o
"_ZBarReaderControllerResults", referenced from:
-[mycontroller imagePickerController:didFinishPickingMediaWithInfo:] in mycontroller.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我曾尝试调整 libzbar.a 项目设置(例如,将活动架构设置为“YES”),但这只会导致模拟器或设备都无法工作。
它适用于设备但不适用于模拟器的事实让我觉得有一些奇怪的架构/项目设置导致了这种情况。
非常感谢任何帮助!