XCode8下一个undefined symbols for architecture arm64问题的解决

在Xcode7下能够编译通过的工程,在XCode8下会报,

undefined symbols for architecture arm64 错误,

对于该问题网上有很多相关的帖子,也有很多回答,比较多的回答有:

1. 查看自己的工程设置里有没有对应好architecture,就是报错的指令集有没有包含在工程所用到的指令集中,比如armv7,arm64等

2. 查看用到的静态库里有没有相应的指令集;

find . -name *.a -exec lipo -info "{}" \;


除了上面两个,如果还有问题,那下面的两个回答可能对你有所帮助:

1. 通过nm命令将 静态库的符号表都导出来,如果所有报错的符号在表里面都存在,但是为什么就是报错呢?

经过不懈的上网查资料,终于找到有位高人给出的答案:

修改build settings->Enable Testability选项为NO,而在Xcode7中该值默认为NO,XCode8中该值默认为YES,所以导致了出错。

http://www.cocoachina.com/bbs/read.php?tid-1704599-fpage-2.html

这个是因为从XCode7升级为XCode8默认的设置不同导致的。


2. 如果以上三个方法都没有解决你的问题,那么最后一项可能是XCode版本不一致。这个一般发生在静态库是之前的版本沿用下来的,或者产生静态库的XCode工程是从网上下载下来的,这个时候一定要用文本方式打开XCode的工程文件.xcodeproj看看,里面的xcode版本到底是多少:

compatibilityVersion = "Xcode 3.2";

如果该版本跟目前所用的xcode版本不一致,最后统一为目前使用的xcode版本,将两个版本号统一起来,这样再编译静态库放到工程里使用。




这个问题查了2天,成本比较高,必须在此记录一下,以备后续使用。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值