Zbar SDK无法在iOS6中运行

sat*_*thy 28 objective-c zbar-sdk ios6

我在iOS5中使用ZBar进行扫描,效果很好.

现在更新到iOS6后,它无法正常工作.它显示以下错误.

    ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/mac4/Desktop/my desktop/My app/MyApp name 20:09:12  /MyApp name/ZBarSDK/libzbar.a for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我身边出了什么问题?

mar*_*mba 52

在Xcode中,转到目标设置,更改' Valid Architectures'

armv7,armv7s
Run Code Online (Sandbox Code Playgroud)

armv7
Run Code Online (Sandbox Code Playgroud)

此更改意味着您的应用程序不会利用新iPhone5处理器可能的优化,但您不必等待第三方库升级或弄乱十六进制编辑器.

  • 正如在单独答案的评论中所指出的,解决此问题的适当方法是编译库以包含正确的体系结构.说明和可下载的软件包位于http://www.federicocappelli.net/2012/10/05/zbar-library-for-iphone-5-armv7s/ (4认同)
  • Kappe,那不是真的.armv7s是armv7的超集,所以在armv7上工作的任何东西都应该在v7上运行.如果库包含使用armv7s功能的代码(即速度增强),则会丢失这些功能.只有当库只能在v7上工作**时,你才会遇到问题. (2认同)

小智 30

我最近遇到了同样的问题.问题似乎是ZBar SDK还没有为armv7s架构做好准备.

我这样解决了问题:

  1. 转到ZBar主页并导航到mercurial存储库(直接链接)
  2. 以zip格式下载zbar存储库.
  3. 解压缩文件并导航到名为"iphone"的子文件夹.
  4. 打开XCode项目.
  5. 删除"Examples"文件夹(该文件夹在我的机器上导致生成错误).
  6. 点击"CMD + B"并构建源代码.
  7. 找到您新的libzbar.a文件.(用户/库/开发商/ Xcode中/ DerivedData/zbar和...)
  8. 用新的替换项目中的旧libzbar.a文件.
  9. 打"CMD + R"就可以了.

  • 这在设备或模拟器上运行时有效.当您尝试构建产品时,我仍然会收到此错误."_OBJC_CLASS _ $ _ ZBarReaderController",引自:DealElementDisplayController.o中的objc-class-ref"_ZBarReaderControllerResults",引用自: - DealElementDisplayController.o中的[DealElementDisplayController imagePickerController:didFinishPickingMediaWithInfo:] ld:未找到架构armv7的符号 (2认同)
  • 这确实有效.只需一件事,当您转到直接链接时,单击代码而不是iPhone,然后单击"下载快照".其余说明完美无缺.谢谢. (2认同)

Osc*_* S. 21

hg源码下载/重新编译教程很棒,但你不需要做所有这些.

只需浏览http://sourceforge.net/projects/zbar/files/iPhoneSDK/beta/并下载ZBarSDK-1.3.1.dmg,一切都将开箱即用,适用于最新架构(在我的案例中为armv7,armv7s) ).

更新:

你们有些人在XCode 5,iOS 7或架构arm64上报告了ZBarSDK的问题......我今天回到这个项目并遇到类似的问题,发现有一个ZBarSDK库可以编译为与iOS 7一起使用:http ://www.nerdvision.net/app-development/ios/zbar-sdk.我刚用新的文件替换了旧文件,编译了我的项目.请注意,我项目的Build Settings中的Architectures设置为amrv7,arm64($ ARCHS_STANDARD),Base SDK设置为iOS 8.0,我将Build Active Architectures Only标志设置为Yes.

这里有一个问题:zbar SDK不适用于armv7s(iPad 4 iOS 7)

感谢@cdescours的小费!