顯示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