2013-02-14 149 views
0

說我有兩個版本的庫位於文件夾「V1」和「V2」,我有兩個C文件:「v1.c」和「v2.c」,其中「v1.c」將使用庫「V1」和「v2.c」將使用庫「V2」。請注意,「V1」和「V2」具有相同的界面。我試過了:在編譯期間可以鏈接到不同的對象嗎?

g++ -c v1.c -o v1.o -I${V1}include 
g++ -c v2.c -o v2.o -I${V2}include 
g++ main.c -L${V1}lib v1.o -L${V2}lib v2.o -lsomething 

請注意,我在最後一個鏈接步驟中的2個對象文件之前提供了2個庫路徑。顯然它不會達到我的預期,但我只是爲了讓我的意圖清楚而展示出來。感謝您的任何建議。

+0

你得到的錯誤是什麼? – fons 2013-02-14 02:03:47

回答

1

,如果你有兩個庫函數「酒吧」,和庫具有相同的名稱,它將使用第一個找到合適的符號,即,從文件功能「酒吧」,這是第一位的搜索將被使用。

您可以對不同庫中的符號給出不同的名稱(它們仍然具有相同的名稱),可以爲庫提供不同的名稱。

雖然我還不能肯定重命名符號會有所幫助,因爲連接器可以只對鏈接首先遇到的庫,然後抱怨說,它不包含其他人需要的符號。最可靠的方法是重命名庫。

請評論,如果有任何不明白,我會嘗試進一步解釋。

相關問題