我在尝试使用外部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 _ $ _ 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
。我怎样才能将它们添加到我的库架构中才能编译?
答案 0 :(得分:10)
这意味着您的.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。所以你应该避免使用旧库。
答案 1 :(得分:5)
如果图书馆没有X86_64架构,那么如果您为构建目标选择了连接设备而不是模拟器,则可以构建它。
基本上,您仍然可以构建和开发,但是您无法使用模拟器。
答案 2 :(得分:2)
答案 3 :(得分:0)
在构建libStimshop_SDK.a的项目中,请确保"架构"设置设置为$(ARCHS_STANDARD),并且它在编译器设置中包含64位设置。确保"有效架构"设置也包括64位。