【问题标题】:XCode 6.1 Missing required architecture X86_64 in file for extern libraryXCode 6.1缺少外部库文件中所需的架构X86_64
【发布时间】:2015-01-26 21:39:42
【问题描述】:

我在尝试使用外部库时遇到问题:我无法编译该项目,因为它会引发如下异常。

ld:警告:忽略文件 /Users/renaudcousin/Documents/XCode/WORK/StimShopPOC/StimShopPOC/libStimshop_SDK.a,在文件 /Users/renaudcousin/Documents/XCode/WORK/StimShopPOC/StimShopPOC/libStimshop_SDK 中缺少所需的架构 x86_64 .a(3片) 架构 x86_64 的未定义符号: “_OBJC_CLASS_$_StimshopSDK”,引用自: ViewController.o 中的 objc-class-ref ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)`

我尝试了很多在 stackoverflow 上找到的解决方案(但对于 XCode 5.1 并没有得到很好的解释),没有任何改变......

我还发现了这个主题XCode 6.1 Missing required architecture X86_64 in file 与我的问题完全对应并且 使用lipo -info 命令查看我的lib 架构时,似乎缺少i386 和x86_64。我怎样才能将它们添加到我的库架构中以便能够编译?

【问题讨论】:

  • 你有那个库的来源吗?那么你可以通过包含新架构来重新编译它,否则不会
  • 不,它是来自另一个开发者的库,所以我无法重新编译它。

标签: ios x86-64 xcode6.1


【解决方案1】:

如果一个库没有 X86_64 架构,如果您选择了连接的设备而不是模拟器作为构建目标,则可以构建它。

基本上,你仍然可以构建和开发,但你不能使用模拟器。

【讨论】:

    【解决方案2】:

    单击您的项目 > 构建设置 > 架构。将架构更改为 armv7 并删除其他如 armv6,etc ,然后它将起作用:-

    【讨论】:

      【解决方案3】:

      这意味着您的 .a 库不包含 x86_64 架构(您可以运行 lipo -info /path/to/your/lib.a 来验证它)。如果您没有库的源代码,则必须修改自己的项目。在构建设置中,将valid architectures 更改为armv7 和i386,或仅将Architectures 更改为armv7。但是,根据 Apple 的公告,这样做不会将您的项目编译为 arm64 架构,这是在 2015 年 2 月之后上传到 App Store 时所必需的。

      如果您的库不包含 x86_64 架构,则它很可能也不包含 arm64。所以你应该避免使用旧的库。

      【讨论】:

      • 我知道,我已经测试了lipo -info 命令,但它错过了i386 和x86_64 架构。但我无法避免使用这个库,这是我的经理要求创建原型应用程序的!
      • 还尝试将valid architecture 设置为armv7 和i386,或将architecture 设置为armv7,但这只会改变我的问题,因为我的库不包含i386 架构。
      • 如果 .a 文件不包含 i386 和 x86_64 架构,则无法链接到 iPhone 模拟器使用的应用程序。在这种情况下,无论您做什么,当您尝试为模拟器进行编译时,都会出现编译器错误。你唯一能做的就是要求一个 x86 版本,或者在你的真实设备上调试你的应用程序。
      • 你应该注意到 iPhone 模拟器使用的是 x86 架构,而不是 arm 的。
      • 好的,谢谢。这就是我所看到的。但是我现在正在尝试直接在设备上编译并且总是从架构中得到一些错误......我正在等待 lib 的开发人员提供新版本。谢谢大家的回复:)
      【解决方案4】:

      在构建 libStimshop_SDK.a 的项目中,确保“架构”设置设置为 $(ARCHS_STANDARD),并且在编译器设置中包含 64 位设置。确保“有效架构”设置也包括 64 位。

      【讨论】:

      • 我已经尝试过了,但它并没有改变任何东西。还尝试了ARCHS_STANDART_INCLUDING_64_BITS 并添加了armv7s
      • libStimshop_SDK.a 是否被构建为子项目,所以它在应用构建时构建?如果没有,您必须创建一个“胖”二进制文件,如下所述:stackoverflow.com/questions/19010870/fat-libraries-in-xcode-5 注意:这两个项目需要具有相同名称的配置。
      猜你喜欢
      • 2014-12-20
      • 2015-10-10
      • 2013-10-15
      • 2016-02-03
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      相关资源
      最近更新 更多