2014-05-20 54 views
0

我在我的應用程序中使用了第三方框架,稱爲IDchecker,當我運行代碼時,出現鏈接器錯誤。我嘗試添加-ObjC和-lstdC++到另一個鏈接器標誌,但它不適用於我。你能說出這種錯誤的真正原因嗎?Apple Mach-o鏈接器錯誤架構i386的未定義符號:

Apple Mach-o Linker Error 
Undefined symbols for architecture i386: 
    "std::ios_base::Init::Init()", referenced from: 
     __GLOBAL__I_a in IDCheckerSDK(IDCheckerSDK.o) 
     __GLOBAL__I_a in IDCheckerSDK(IDCCameraViewController.o) 
     __GLOBAL__I_a in IDCheckerSDK(IDCImageProcessor.o) 
     __GLOBAL__I_a in IDCheckerSDK(IDCFaceLinkViewController.o) 
     __GLOBAL__I_a in IDCheckerSDK(UIImage+OpenCV.o) 
+1

你可以嘗試在目標的構建階段添加libstdC++。6.0.9.dylib ..沒有嘗試但我懷疑它已經與鏈接C++庫。哦,順便說一句lstdC++不會在xcode 5中工作(如果你使用它) –

+0

你是對的...它的工作。請發佈答案,以便我可以將您的答案標記爲答案 – iOSDeveloper

回答

1

按照建議,爲他人使用......

似乎是在鏈接C++的lib問題。 請在目標的構建階段包含libstdc++.6.0.9.dylib。 這應該解決這一問題

希望這有助於...

*********** EDIT *****************

感謝@trojenfoe指出了這一點。 雖然目前正在工作,但對於更穩定的解決方案,建議鏈接到libstdc++.dylib。在您的目標的Build Phases選項卡的Link binary with libraries下。

+0

爲什麼這會解決問題並鏈接到「-lstdC++」(因爲OP陳述他嘗試過)不能解決問題?你能解釋一下嗎? – trojanfoe

+0

@trojanfoe在xcode 5 -lstdC++不起作用。人們正面臨着這個問題。爲您的參考http://stackoverflow.com/questions/8950388/link-objective-c-application-to-c-static-library。 –

+0

這是一個人的觀點,它不適用於Xcode 5;我的經驗是不同的,但是我不會將它添加到* Other Linker Flags *中,但將它放入* Build階段*的*鏈接二進制文件*部分。我相信鏈接到這樣一個特定版本的庫是一個壞主意,並且會在/更新庫時導致問題。 – trojanfoe

1

該框架可能沒有用i386 arch編譯。

運行A:

file yourframework.framework/yourframework 
e.g. file Test.framework/Test 

如果你不能看到在輸出i386硬件架構,則該特定拱丟失。

1

我相信接受的答案是一個錯誤,因爲鏈接到這樣一個特定版本的運行時庫將導致問題何時/如果庫更新。

相反,而不是使用其它鏈接器標記構建設置,我勸你對libstdc++.dylib構建階段項目設置的鏈接二進制與圖書館部分中鏈接。我已經在Xcode 5下做了這個沒有問題(但我與libc++.dylib鏈接,但我不認爲這種差異很重要)。

+0

,但它工作正常.. – iOSDeveloper

+0

鏈接到指定版本的lib將面臨哪些問題? –

+1

@XCodian這很好,但它可以在6個月的時間內或在不同版本的OSX下正常工作嗎? – trojanfoe

相關問題