1. 程式人生 > >編譯時出現的錯誤和解決辦法

編譯時出現的錯誤和解決辦法

1、"std::ios_base::Init::~Init()", referenced from

出現這樣的編譯問題,是需要再加進libstdc++.dylib和libstdc++.6.dylib(為6.1使用,xcode5以後預設complier也可以編譯通過)

2、apple Mach-o Linker error通常是因為compile source中有相同的.m檔案 

3、如果在真機中進行測試時出現failed to get the task for process,有可能是證書出了問題。

4、如果出現expect a type的錯誤,可能出現了在.h檔案中的迴圈引用。

5、以後不能同時有兩個一樣的.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設定成空即可。