XCode 6.1在extern库的文件中缺少所需的体系结构X86_64

时间:2014-11-28 09:02:48

标签: ios x86-64 xcode6.1

我在尝试使用外部lib时遇到问题:我无法编译项目,因为它会抛出异常,如下所示。

  

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 _ $ _ St​​imshopSDK”,引自:         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架构时,它似乎缺少i386x86_64。我怎样才能将它们添加到我的库架构中才能编译?

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:5)

如果图书馆没有X86_64架构,那么如果您为构建目标选择了连接设备而不是模拟器,则可以构建它。

基本上,您仍然可以构建和开发,但是您无法使用模拟器。

答案 2 :(得分:2)

点击您的项目>构建设置>建筑。将架构更改为 armv7 并删除其他类似 armv6等,然后它将起作用: - Image where change is required

答案 3 :(得分:0)

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