XCode 6.1 在外部库的文件中缺少必需的架构 X86_64
XCode 6.1 在外部库的文件中缺少必需的架构 X86_64
我在尝试使用外部库时遇到了一个问题:当我编译项目时,会抛出以下异常。
ld: 警告: 忽略文件 /Users/renaudcousin/Documents/XCode/WORK/StimShopPOC/StimShopPOC/libStimshop_SDK.a,文件 /Users/renaudcousin/Documents/XCode/WORK/StimShopPOC/StimShopPOC/libStimshop_SDK.a 中缺少所需的 x86_64 架构(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
命令查看我的库的架构时,似乎缺少i386
和x86_64
。我应该如何将它们添加到我的库架构中以便能够编译?
XCode 6.1 缺少所需的架构 x86_64 问题的原因是 .a 库文件不包含 x86_64 架构。可以通过运行 lipo -info /path/to/your/lib.a
命令来验证。如果没有库文件的源代码,就需要修改项目。在构建设置中,将 "valid architectures" 改为 "armv7" 和 "i386",或者将 "Architectures" 改为 "armv7"。然而,这样做会导致项目无法编译为 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 架构。
是的,谢谢。这就是我所看到的。但是我现在正在尝试直接在设备上编译,但总是遇到来自架构的一些错误...我正在等待库的开发者发布一个新版本。谢谢大家的回复 🙂