我有一个使用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
和我的项目设置(用于我的应用程序)为:
体系结构:标准(armv7,armv7s) $(ARCHS_STANDARD_32_BIT)
仅构建主动体系结构:否
有效架构: armv7 armv7s
Base : 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"),但这只会导致模拟器或设备都不能工作。
事实上,它在设备上工作,而不是在模拟器上工作,这让我感到有些奇怪的架构/项目设置导致了这种情况。
任何帮助都非常感谢!
发布于 2012-09-25 01:27:16
我怀疑这是不是正确的答案,但它对我有效,我编译了新的libzber.a使用的体系结构: i386 armv6 armv7 armv7s,您还需要将有效的体系结构指定为相同的值。这也是我最近发布的一个版本(我需要获得A.S.A.P. )的工作原理。这两个版本都可以在目标->构建设置->体系结构中找到。
还要注意:$(ARCHS_STANDARD_32_BIT)需要从设置中删除。
发布于 2012-10-16 07:57:25
我通过在Target->Build中将iOS6仿真器架构设置为OTHER_LDFLAGS来解决类似的问题。
我忘记了对于不同的体系结构,我有一个不同的命令行参数,所以我不得不手动地声明模拟器。
https://stackoverflow.com/questions/12551280
复制相似问题