我有一个使用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),那就是它失败了。
无论我怎样都无法同时使用相同的设置为设备和simualtor构建此项目:(
构建我自己的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”)但这只会导致模拟器或设备无法正常工作。
它在设备上运行而不是模拟器的事实让我觉得有一些奇怪的架构/项目设置导致这种情况。
非常感谢任何帮助!
答案 0 :(得分:2)
我怀疑这是正确的答案,但它对我有用,我使用架构编译了新的libzber.a:i386 armv6 armv7 armv7s,你还需要指定有效的架构值。对于我来说,这对我来说是最有用的,我需要离开A.S.A.P.两者都在Target中找到 - >构建设置 - > Architecures。
另请注意:需要从设置中删除$(ARCHS_STANDARD_32_BIT)。
答案 1 :(得分:1)
我通过在Target-> Build Settings中的OTHER_LDFLAGS下设置iOS6模拟器架构来解决类似的问题。
我忘了我对分离的archituctures有一个不同的命令行参数所以我不得不手动说明模拟器