Undefined symbols for architecture arm64:ui
"_Decoder_Interface_init", referenced from:spa
EM_DecodeAMRFileToWAVEFile(char const*, char const*) in amrFileCodec.o3d
"_Decoder_Interface_Decode", referenced from:code
EM_DecodeAMRFileToWAVEFile(char const*, char const*) in amrFileCodec.o視頻
"_Decoder_Interface_exit", referenced from:blog
EM_DecodeAMRFileToWAVEFile(char const*, char const*) in amrFileCodec.oip
"_Encoder_Interface_init", referenced from:it
EM_EncodeWAVEFileToAMRFile(char const*, char const*, int, int) in amrFileCodec.oio
"_Encoder_Interface_Encode", referenced from:編譯
EM_EncodeWAVEFileToAMRFile(char const*, char const*, int, int) in amrFileCodec.o
"_Encoder_Interface_exit", referenced from:
EM_EncodeWAVEFileToAMRFile(char const*, char const*, int, int) in amrFileCodec.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
某天遇到編譯錯誤,操做一番,而後出現這個問題。這個問題當時困擾我和同事很久。上網翻找答案,都是講的arm64指令集的問題。可是對於解決這問題仍是一臉懵逼的狀態。我晚上加班再查查了網上各種文章,試着改了改 Xcode項目 Build Settings -> Architectures的配置,以下圖:
一直在這改動Architectures所支持的arm6四、arm64e、armv七、armv7s指令集,以下圖
可是仍是解決不了,有的時候還出現了新的錯誤。錯誤我也就不摘出來了,我也不大清楚這類錯誤。
我轉而繼續看提示的錯誤,我發現了個amrFileCodec.o。shift+command+o 來一波,輸入amrFileCodec,以下圖
最後我定位到以下的文件
我給同事講了講,應該是這個文件編譯不通。同事以前作過環信的IM遇到這類問題,她意識到是缺乏了2個.a文件,她上網找到這兩文件拖進項目。最後項目終於編譯終於經過解決這問題。
過後,同事也跟我說了下這兩文件的做用:IM音視頻須要這兩文件libopencore-amrwb.a(64位) 和 libopencore-amrnb.a(64位) 支持arm64,armv7,armv7s。我想到我查找這類文章的時候很是不方便,就寫下這篇文章與小夥伴們分享下,但願對你們有所幫助。