美文网首页i0S
Undefined symbols for architectu

Undefined symbols for architectu

作者: 机器猫的百宝袋 | 来源:发表于2016-05-24 18:06 被阅读419次

    <h4>1.Undefined symbols for architecture i386:</h4>

    Undefined symbols for architecture i386:
    “_OBJC_CLASS_$_XXX”, referenced from:   
    objc-class-ref in XXX   
    ld: symbol(s) not found for architecture i386    
    clang: error: linker command failed with exit code 1(use -v to see invocation)
    

    这个错误的发生原因一般是“XXX”这个文件(类库)虽然引入了工程中,但是由于种种原因(常见于多人开发,svn同步不规范)导致“XXX”并未被添加到project.pbxproj这个文件中。
    解决方法是点击工程,在targets界面中找到Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。

    注意:对于静态文件来说还有一种情况,该静态库未经性真机与模拟器的.a文件合成。此时建议通过控制台查看静态文件所支持的架构。查询方法如下:
    ipo -info /Users/hhh/Desktop/XXX.a

    合成方法:
    lipo -create /Users/xxx/Dev/libme/bin/Debug-iphoneos/libmecli.a /Users/xxx/Dev/libme/bin/Debug-iphonesimulator/libmecli.a -output /Users/xxxx/Dev/libme/bin/libmecli.a

    右击静态文件,show in finder 找到合成的静态文件

    <h4>2."std::terinate()",referenced from:</h4>
    错误中出现双冒号则为C++代码,由于Xcode 默认情况下不支持C++。解决方案:将工程中任意一个.m文件后缀改为.mm
    友情提示:
    .c C代码
    .cpp C++代码
    .m C+OC代码
    .mm C + OC + C++ 代码

    <h4>3.Undefined symbols for architecture x86_64:</h4>
    不支持64位架构设备。
    解决方案:
    Build Settings-> Architecture-点击other->将原来的$(ARCHS_STANDARD)修改为$(ARCHS_STANDARD_32_BIT)即可

    相关文章

      网友评论

        本文标题:Undefined symbols for architectu

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