显示Undefined symbols for architecture x86_64错误的原因
1、缺少静态库
- 环境:在模拟器上报错但在真机上能运行成功,而且报的错误来自于第三方库。
- 原因:architecture x86_64 是指模拟器的架构,意思就是 Crypto 变量在模拟器架构里没有找到。静态库也分不同架构的,可能你项目里使用的这个库只用了真机版本的(该静态库不支持在模拟器下编译),没有使用模拟器版本的,所以模拟器跑的时候没有找到对应的库,这些需要的变量也就缺失了。
- 解决方法:把模拟器版的库也下下来,然后跟真机版的合成一个静态库,这样就通用了。PS:有些第三方库只有真机版本的,所以就只能真机调试了。
2、缺少库或框架
- 环境:导入某一个类,在模拟器真机都运行报错。
- 原因:可能这个类所属的库或框架(这个类引用的库或框架)没有被添加到项目中。比如你在项目中使用了sqlite3,但是没有添加 libsqlite3.dylib。
解决办法
- 安装完sqlite3之后,会在/usr/lib文件夹下面存在动态库文件,可以使用ls命令进行查看
- 配置CMAKELIST.txt文件
- link_libraries("/usr/lib/libsqlite3.dylib")
参考链接
- Undefined symbols for architecture x86_64