前幾天由於作一個語音視頻通話的功能, 在項目中引入部分語音通話庫, 致使出現如下錯誤:ios
後通過排查, 終於定位到錯誤, 原來是由於新導入的兩個.a靜態庫與原先項目中的 .a 靜態庫同名所致使c++
要排查項目內是否有這個問題xcode
在這裏搜索你的.a靜態庫, 查看是否有和你引入的靜態庫同名的庫, 而後刪除掉其中一個就能夠解決app
如下是其餘排查方法:測試
一、"std::ios_base::Init::~Init()", referenced fromui
出現這樣的編譯問題,是須要再加進libstdc++.dylib和libstdc++.6.dylib(爲6.1使用,xcode5之後默認complier也能夠編譯經過)code
二、apple Mach-o Linker error一般是由於compile source中有相同的.m文件視頻
三、若是在真機中進行測試時出現failed to get the task for process,有多是證書出了問題。接口
四、若是出現expect a type的錯誤,可能出現了在.h文件中的循環引用。get
五、之後不能同時有兩個同樣的.m文件在編譯,這樣會報linker command failed with exit code 1 (use -vto see invocation)這個錯誤
(另外:若是代碼中混合有C或者C++代碼,那麼,也不能夠在兩個不一樣名稱的mm文件中進行聲明或者引用,由於也會致使這個錯誤的發生)。
6. 編譯器提示相似file is universal but does not contain a(n) armv6 slice for architecture armv6的錯誤。多是您的XCode版本太低,推薦使用4.2以上的版本,將XCode的Build Settings中的Architectures設置成arm7。
7. XCode提示有相似C++語法的錯誤。多是您在調用接口時沒有設置成OC與C++混編模式(具體作法爲將調用接口的實現文件改成.mm的後綴)。
8. 提示相似ld: 3 duplicate symbols for architecture i386(arm7)的錯誤。多是您用了與SDK相同的第三方庫,解決方法是刪除引發錯誤的第三方法庫的實現文件(.m文件)。
9. 編譯器提示相似file is universal (2 slices) but does not contain a(n) armv7s slice:…… for architecture armv7s的錯誤。是由於此版本的庫還不支持arm7s的環境,將Build Settings項中的Valid ArchiteCtures中的arm7s刪除便可解決。
10. 編譯器提示相似Duplicate symbol _NN_Decode in /Users/…/libPPUserPayKit.a(UPPayRsa_nn.o) for architecture armv7或Command /Developer/…/bin/llvm-g++-4.2 failed with exit code 1的錯誤。則是由於C++混編模式引發的,您能夠將Build Settings 設置項裏面的Other Linker Flags設置成空便可。