錯誤示例:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_XXX", referenced from:
objc-class-ref in XXXXX.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
錯誤原因:
鏈接庫時沒有找到對應的實現類
原因種類:
這篇文章總結的比較全了:
徹底解決_OBJC_CLASS_$_某文件名", referenced from:問題(轉)
1. .m文件沒有導入
2. .framework文件沒有導入
3. 重復編譯,可能你之前復制過兩個地方,在這里添加過兩次,刪除時系統沒有默認刪除編譯引用地址
4. 最后一個問題,出在靜態庫生成上面。系統編譯生成的靜態庫有兩個,一個真機調用的,一個模擬器調用的。
當你在真機測試時導入模擬器靜態庫,運行就會報錯;同樣在模擬器測試時調用真機靜態庫也會報錯。
解決這一問題也很簡單,就是將兩個靜態庫合并,生成一個兼容的靜態庫。
5. 我遇到的問題是設置了導出symbols的文件,但文件里是空的,導致link error。如下圖所示: