美文网首页
Undefined symbols for architectu

Undefined symbols for architectu

作者: 伯牙呀 | 来源:发表于2017-04-21 15:12 被阅读1989次

    一、错误提示:

    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$_Crypto", referenced from:
          __TMaCSo6Crypto in AuthHelper.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    大致意思是在 AuthHelper 里面有一些无法识别的符号。

    二、常见原因和解决方法:

    1、缺少静态库:
    • 环境:
      在模拟器上报错但在真机上能运行成功,而且报的错误来自于第三方库。

    • 原因:
      architecture x86_64 是指模拟器的架构,意思就是 Crypto 变量在模拟器架构里没有找到。
      静态库也分不同架构的,可能你项目里使用的这个库只用了真机版本的(该静态库不支持在模拟器下编译),没有使用模拟器版本的,所以模拟器跑的时候没有找到对应的库,这些需要的变量也就缺失了。

    • 解决方法:
      把模拟器版的库也下下来,然后跟真机版的合成一个静态库,这样就通用了。
      PS:有些第三方库就很蛋疼,只有真机版本的,所以就只能真机调试了。

    2、缺少库或框架:
    • 环境:
      导入某一个类,在模拟器真机都运行报错。

    • 原因:
      可能这个类所属的库或框架(这个类引用的库或框架)没有被添加到项目中。
      比如你在项目中使用了sqlite3,但是没有添加 libsqlite3.dylib

    • 解决方法:
      添加这个类所属的库或者框架(这个类引用的库或框架),步骤如下:
      TARGETS -> Build Phases -> Link Binary With Libraries -> +

      Link Binary With Libraries
    3、添加文件错误:
    • 环境:
      在你将文件添加到项目中时,未选择 Add to targets

      add file
    • 原因:
      在你将文件添加到项目中时,未选择 Add to targets 进行添加。

    • 解决方法:
      为正确的目标打开 Build Phases,展开 Compile Sources 并添加缺少的 .m文件,步骤如下:
      TARGETS -> Build Phases -> Compile Sources -> add the missing .m class -> Build and Run

      add the missin .m class

    翻译出处:Resolving symbol(s) not found for architecture x86_64

    相关文章

      网友评论

          本文标题:Undefined symbols for architectu

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