2009-12-10 57 views
1

我將一些Visual Studio 2008/VC9的東西移植到Code :: Blocks/MinGW,並且出於某種原因,鏈接器無法從工作空間中的其他項目中找到靜態庫。鏈接器無法在同一目錄中找到靜態庫

在Visual Studio 2008中,我可以將靜態lib項目設置爲依賴項,並且它將以正確的順序構建(即在連接其他項目之前需要構建靜態庫),並鏈接正確的庫組態。

我在Code :: Blocks中找不到這樣的選項,所以我確保先顯式構建靜態庫(libcommon.a),然後在「構建選項」下爲其他項目添加「libcommon.a」在「鏈接器設置」中。在某文件位於同一目錄中的項目文件,但我還是從其他項目的鏈接得到一個錯誤,說他們不能找到它......

ld.exe找不到-lcommon

我在做什麼,所以它無法找到圖書館,即使它右邊的項目文件?

還有更好的方法來模擬單個解決方案/工作區內的Visual Studio依賴關係嗎?

+0

您的錯誤消息提到「-lcommon」,但您說您的庫名爲「libcommon.a」。我不熟悉Code :: Blocks; 「-lcommon」翻譯成「libcommon.a」嗎?您始終可以運行文件監視器並查看鏈接程序正在查找的文件(以及在哪個目錄中)。 – Luke 2009-12-12 18:54:22

+0

嗯,我特別告訴代碼塊鏈接「libcommon.a」,它給了鏈接器「lcommon」,所以我要去與編譯器不期望進行「lib」和「.a」擴展名。其他庫工作正常,文件名與鏈接程序獲取的內容相同。 – 2009-12-12 19:10:32

回答

2

顯然,包含項目文件的目錄不包含在鏈接器搜索路徑中,需要通過將「。\」添加到包含項目庫文件的目錄列表中來顯式定義。