···
Undefined symbols for architecture arm64:
"_vImageRotate90_Planar8", referenced from:
-[ScreenRecorderFilter createRotatePixelBuffer:] in libyyvideolibstatic.a(ScreenRecorderFilter.o)
"_vImageRotate90_Planar16U", referenced from:
-[ScreenRecorderFilter createRotatePixelBuffer:] in libyyvideolibstatic.a(ScreenRecorderFilter.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
···
我這是pod導入的盒让,原理就是缺庫,所以會報錯
這我就懵了司蔬,我已經(jīng)按照別人的demo拖進去了啊邑茄。
后來我試著一對,發(fā)現(xiàn)竟然沒有全都導入進去葱她。撩扒。《中坑死我了搓谆。。
原因也可能很多豪墅,比如:
0泉手、如果只有@interface,沒有@implementation也會導致這個錯誤
1偶器、注意看Build Phases里面的Compile Sources里面有沒有被報錯的類文件斩萌,如果沒有的話也會報上面的錯誤
2、大部分情況下是忘記添加了某個系統(tǒng)framework或dylib吧屏轰,比如你在項目中使用了sqlite3颊郎,但是沒有添加libsqlite3.dylib,就會出現(xiàn)這個問題霎苗。解決辦法是增加對應(yīng)的framework或dylib姆吭。
3、如果是在C++里調(diào)用C函數(shù)唁盏,檢查是否有添加extern "C"内狸,這可以通過觀察錯誤提示中的函數(shù)名形式來決定检眯,如果是C函數(shù)而以C ++的方式調(diào)用就需要添加extern "C"。
4昆淡、如果是把其它工程的xcodeproj文件加入到當前項目中锰瘸,檢查Build Phases中的Target Dependencies有沒有添加依賴,以及General中的Linked Frameworks and Libraries有沒有添加相關(guān)的.a文件昂灵。
5避凝、如果添加.a文件編譯無錯而添加xcodeproj文件編譯出錯可參考3
6、如果添加.a文件編譯出錯眨补,首先檢查其對應(yīng)的頭文件是否添加正確恕曲,或者在Build Setting中有沒有添加對應(yīng)的Header Search Path路徑;其次檢查.a文件的c++編譯選項與當前項目的c++編譯選項是否一致渤涌;最后檢查.a文件與當前項目的CPU架構(gòu)信息是否一致
7、如果是extern變量報這個錯誤把还,要檢查extern變量有沒有在其它地方聲明实蓬,如果沒有則加上;如果外部變量在靜態(tài)庫中吊履,可根據(jù)5檢查引用頭文件或頭文件搜索路徑是否正確安皱;如果頭文件無問題,就需要檢查靜態(tài)庫與與當前項目的CPU架構(gòu)信息是否一致
8艇炎、如果是使用了靜態(tài)庫酌伊,真機Debug測試時正常磺芭,而在執(zhí)行for iOS Device測試時報這個錯誤崖瞭,很可能是因為靜態(tài)庫支持的架構(gòu)不全润脸。出現(xiàn)這種情況是Build Setting中的Build Active Architecture Only在Debug下設(shè)為Yes宴偿,從而使得真機Debug測試正常吴旋。
- 如果是用Cocoapods集成第三庫涝婉,且是引用第三方庫時出現(xiàn)上述類似問題劲件,需要注意在build setting里面的other linker flags里添加 $(inherited)未巫,這個是從pod install里看到解決方法的唇敞。