2012-12-29 30 views
0

我正在使用用Clang構建的對象文件。但無論我傳遞給ld.exe的庫參數如何,它似乎總是回吐未解決的引用,例如memcpy,標準庫,東西以及像_cxa_atexit這樣的實現東西。我需要使用MinGW與Clang構建的目標文件鏈接哪些庫?

我需要傳遞給MinGW鏈接器來將它鏈接到可執行文件中的庫文件(以什麼順序?)?

編輯:

我改變了三倍,從「爲i686-PC-MinGW的」到「的i686-PC-mingw32的」,它解決了大部分的problems-鏘的確實的「老把戲D3D9失敗默默地當輸入顯然是錯誤的,輸出無法正確輸入「。但是我剩下的只有兩個未解決的外部問題 - 和doublestd::_Hash_impl,沒有任何變化。該計劃只是「你好,世界!」。奇怪的是,clang ++。exe和g ++。exe在編譯源代碼時都沒有問題,但是如果我使用Clang C++ API將它編譯爲.o,然後將它傳回MinGW,我會得到未解析的外部代碼。

+1

你爲什麼不讓叮噹做鏈接的任何具體原因? (或者可能是g ++,不知道目標文件是否兼容。)在Windows上不可用? – Mat

+0

因爲我需要使用Clang C++ API,所以我必須自己做。 – Puppy

+0

(我不明白這是如何阻止你使用clang ++來鏈接,但我從來沒有這樣做過。)你有沒有嘗試用'clang ++ -v foo.cpp'構建一個虛擬的C++源代碼並使用/調整鏈接器調用顯示? – Mat

回答

2

通常,在構建二進制文件時使用不同的工具鏈並不是一個好主意。完全有可能不同的工具對符號名稱的想法不匹配。

儘管如此,試圖回答您的實際quesiton:

-lstdc將是一個最起碼的要求和-lstdc++如果它的C++代碼。不知道你的代碼是做什麼的,不可能說你是否需要更多的代碼。

+0

我嘗試過,但沒有效果。 – Puppy

+0

你究竟做了什麼? –

+0

g ++ -lstdC++ foo.obj,對於ld類似,但仍然是一大堆未解決的外部數據。 – Puppy

相關問題