【问题标题】:Apple Mach-O Linker Error ZBarSDK error when building for distributionApple Mach-O Linker Error ZBarSDK 在构建分发时出错
【发布时间】:2012-09-06 01:53:36
【问题描述】:

我在使用 ZBarSDK(一个适用于 iOS 的条形扫描库)时遇到了同样的错误。当我将它上传到我的开发设备或在 iOS6 模拟器上测试它时,它运行良好。但是当我尝试为分发运行它时,它失败了:

(null):文件是通用的(3 个切片)但不包含 a(n) armv7s 切片:/Users/quique123/Documents/iphone apps/ScanThis/ZBarSDK/libzbar.a 用于架构 armv7s

其中 libzbar.a 是来自 sdk 的库。

有什么想法吗?

【问题讨论】:

标签: linker ios6


【解决方案1】:

打开 ZBar code Mercurial 代码仓库

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

转到 bz2/zip/gz 链接以下载当前源代码(首选格式)

http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.tar.bz2(截至发布日期) http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.zip(截至发布日期) http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.tar.gz(截至发布日期)

打开“iphone”子目录

打开“zbar.xcodeproj”文件

在方案的菜单中选择 libzbar 并在支持的架构中构建您自己的二进制版本

打开该项目的 DerivedData 并导航到 Build/Products/

查看 libzbar.a 的所有文件夹

【讨论】:

  • 我正在尝试使用此建议,但在构建后我似乎无法找到 libzbar.a 文件。生成的唯一 libzbar 文件是 .rc 文件。关于我可能错过了哪些设置的任何提示?
  • @nj 我已经编辑了我的答案,以便更好地指导您完成最后的步骤,希望对您有所帮助。
  • 嗨,斯科特,这个解决方案对我有用。但是,我必须使用两个 libzbar.a 文件 - 1. 用于模拟器 2. 用于设备。有什么方法可以让我两者都只使用一个 libber.a。在编译 libber.a 时,我为设备设置了 iOS 设备,为模拟器设置了 iOS 模拟器。我做错了吗?
  • 我在这里得到了答案:federicocappelli.net/2012/10/05/…
【解决方案2】:

只需从 Target Aguilar 设置中的 Valid Architectures 中删除不良架构,您就可以开始了 :)

【讨论】:

  • 稍后您可能想要重建 zbar 以支持 arm7s。这个线程可能是一个很好的起点sourceforge.net/projects/zbar/forums/forum/1072195/topic/…
  • 警告:通过这样做,您的应用将不再适用于在 armv7s 架构上运行的 iPhone 5。
  • 如何删除?我的意思是从哪个文件夹。给我一些步骤
【解决方案3】:

当您选择目标时 > 构建设置(全部)> 架构 > 有效架构。

当您收到上述错误时,通过双击该行并选择 armv7s 并按 (-) 按钮来删除 armv7s(现在可能是 [armv7 armv7s])。

就我而言,这解决了错误。 不确定这是否会进一步产生不利影响..

编辑:现在我确信这至少有一个缺点:该项目不适用于 iPhone 5。 解决方案是重新编译 ZBar 源代码,如下所述:ZBar library for iPhone 5(ARMV7s)

【讨论】:

    【解决方案4】:

    您可以在下面的 URL 中下载 ZBarSDK 的新版本。

    http://sourceforge.net/projects/zbar/files/iPhoneSDK/beta/

    【讨论】:

      【解决方案5】:

      我刚刚在构建设置/有效架构中替换:“armv7”为 2 行“armv6”和“armv7”

      (通常我只是在提交到 iTunes 时才会出现此链接器错误,但在设备中调试时不会出现此链接器错误)

      【讨论】:

        【解决方案6】:

        只需删除“armv7s”即可:)

        【讨论】:

          【解决方案7】:

          将“仅构建活动架构”设置为“是”以进行发布。当我面临同样的问题时,我通过这样做解决了我的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-03
            • 1970-01-01
            • 2014-11-17
            • 2013-02-12
            • 1970-01-01
            • 2014-10-05
            相关资源
            最近更新 更多