Xcode 4.5 - 架构i386找不到符号(Zbar)

8

我有一个项目使用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”),但这只会导致模拟器或设备都无法工作。
它在设备上可以工作,但在模拟器上无法工作,这让我觉得可能有一些奇怪的架构/项目设置导致了这个问题。
非常感谢任何帮助!
2个回答

2
我不确定这是正确答案,但对我有用。我按照以下顺序编译了新的libzber.a:i386、armv6、armv7和armv7s。您还需要将有效架构指定为相同的值。这是最近发布的版本对我有效的方法,我需要尽快发布。两者都可以在“Target -> Build Settings -> Architecures”中找到。
另外,请注意:需要从设置中删除$(ARCHS_STANDARD_32_BIT)。

1

我通过在目标->构建设置中将iOS6模拟器架构设置为OTHER_LDFLAGS来解决了类似的问题。

我忘记了我有一个不同的分离架构的命令行参数,所以我不得不手动指定模拟器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接