問候, 我面臨着在Windows下使用靜態庫的複雜情況。 靜態庫是由與Eiffel工作室捆綁在一起的特定版本的mingw構建的。由於Eiffel studio使用mingw將其輸出創建爲靜態庫,因此我無法控制此配置。 如果我嘗試在Eclipse CDT中使用這個靜態庫,它使用了更新版本的mingw,那麼我無法編譯我的項目。這是因爲我必須爲諸如winsock之類的各種庫提供-l選項,並且由於生成靜態庫的編譯器版本和我的代碼之間的差異,這似乎不起作用。如何使用不同版本的mingw使用靜態庫構建?
如果我強制Eclipse使用與Eiffel studio自帶的相同的mingw目錄,那就是編譯靜態庫的那個,然後我可以編譯我的代碼(雖然這裏還有其他一些問題) 我不想約束我的C++開發僅僅是因爲一個靜態庫是用特定版本的mingw構建的。
那麼如何從我自己的mingw版本使用這個靜態庫?這是Windows XP中順便說一句..
問候 謝雷夫
謝謝。我已經用最新版本的mingw編譯了,這讓我從很多麻煩中解脫出來。我很好奇,是否有可能將一個靜態庫包裝在一個DLL中,以克服編譯器版本問題?我的意思是用舊版本編譯的dll,包裝靜態庫及其依賴關係? – mahonya 2010-09-17 11:44:07
這取決於問題。通常,使用DLL(不管使用什麼編譯器構建它)**都會遇到問題**如果使用LoadLibrary和GetProcAddress解決符號問題,但是如果鏈接到DLL問題可能(通常會),因爲鏈接是每個開發套件特定的進程(即使在版本之間也可能不同),因此可能會出現問題。通過包裝舊的編譯器和導出函數 - 如果這是可能的! - (用GetProcAddress解決)你繞過這些問題。當然,代碼也必須更改爲使用GetProcAddress等。 – INS 2010-09-18 09:21:50