28

我在 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)

我这边有什么问题?

4

9 回答 9

52

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

armv7,armv7s

armv7

此更改意味着您的应用程序将无法利用新 iPhone5 处理器可能进行的优化,但您不必等待 3rd 方库升级或弄乱十六进制编辑器。

于 2012-09-20T16:42:54.490 回答
30

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

我这样解决了这个问题:

  1. 转到 ZBar 主页并导航到 mercurial 存储库(直接链接
  2. 以 zip 格式下载 zbar 存储库。
  3. 解压缩文件并导航到名为“iphone”的子文件夹。
  4. 打开 XCode 项目。
  5. 删除“示例”文件夹(该文件夹在我的机器上导致构建错误)。
  6. 点击“CMD + B”并构建源代码。
  7. 找到新的 libzbar.a 文件。(用户/库/开发人员/Xcode/DerivedData/zbar ...)
  8. 将项目中的旧 libzbar.a 文件替换为新文件。
  9. 点击“CMD + R”,你就可以走了。
于 2012-09-24T08:25:13.547 回答
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 dont work for armv7s(iPad 4 iOS 7)

感谢@cdescous 的提示!

于 2013-03-29T16:11:32.367 回答
2

我有同样的问题,但我刚刚添加armv6armv7然后它适用于 iOS6。只需插入armv6.

于 2013-04-22T10:50:31.027 回答
1

您的二进制库没有 armv7s 的代码。所以你应该为当前的架构重新编译它。

于 2012-09-20T09:14:59.670 回答
1

重新编译源代码,我下载了zbar的源代码并编译成新项目。这很简单。

于 2012-11-08T06:52:00.883 回答
0

克隆 Mercurial 存储库并使用 Xcode 构建。这很容易。这是存储库的链接:

http://zbar.hg.sourceforge.net/hgweb/zbar/iphone/summary

于 2013-03-18T13:30:07.463 回答
0

下载他的博客中提供的教程代码 RDC 后来到这里,遇到了同样的问题。非常有用的帖子,但这里最有帮助的答案是 RacZo 于 3/29 发布的。我刚刚下载了原始的 ZBarSDK-1.3.1.dmg 图像,从我的项目中删除了 ZBarSDK 并替换为原始图像。完毕。

于 2013-09-02T21:20:19.797 回答
0

我正在学习IOS开发。经过几天的挖掘,

这里是安装 ZBar SDK 的教程

1,接受的答案是正确的,但有一些限制。(试过了,有效!)

2,替代解决方案在这里。(试过了,有效!)

3,最好的方法是构建所有不同的架构,然后使用 lipo 绑定它们:很棒的解决方案(尝试过,很棒!)

了解这些架构的一些阅读材料:

http://wanderingcoder.net/2010/07/19/ought-arm/

http://wanderingcoder.net/2011/09/25/compiling-armv7/

于 2013-12-10T22:32:31.243 回答