美文网首页good
Undefined symbols for architectu

Undefined symbols for architectu

作者: 三点水老木头 | 来源:发表于2017-11-16 14:11 被阅读29次
    BC6B774624590383F6CBFCFB68D139E0.png

    将 Settings 内的 Enable Testability 设置为 No

    2FFC0927-717F-40B0-B4CB-7A7B43822EC2.png

    我在工程中使用了funsdkijkframework,设置完这些东西还是会报错,解决方法是,funsdk替换为最新的,JObject.h文件已经在动态库中,原旧工程中的JObject.h文件可以删除,并全局搜索#include"JObject.h"替换为#import <FunSDK/JObject.h>

    下面是网上查到比较全的资料:

    在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版本,将两个版本号统一起来,这样再编译静态库放到工程里使用。
    

    相关文章

      网友评论

        本文标题:Undefined symbols for architectu

        本文链接:https://www.haomeiwen.com/subject/jaulvxtx.html