我試圖將LizardTech GeoExpress DSDK鏈接到我自己的應用程序中。我使用gcc,以便我們可以在平臺上進行編譯。在Linux和Mac上,這很容易實現:它們提供了一個靜態庫(libltidsdk.a
)和頭文件,我們所要做的就是使用它們。從MinGW鏈接到MSVC DLL
編譯窗口並不那麼容易。他們使用Microsoft Visual Studio構建了這個庫,我們使用MinGW。我已閱讀MinGW常見問題解答,並且遇到以下問題。庫是所有C++,所以我的第一個問題:這甚至可能嗎?
僅僅根據提供的dll鏈接,會產生所有C++調用(構造函數,析構函數,方法等)的「未定義引用」錯誤。
基於MinGW的維基: http://www.mingw.org/wiki/MSVC%5Fand%5FMinGW%5FDLLs 我應該能夠使用該實用程序reimp
到的.lib轉換成可用的東西。我試過所有由LizardTech提供的.lib文件,它們都給「無效或損壞的導入庫」。我已經嘗試了0.4版和0.3版的reimp工具。
使用維基中描述的第二種方法,我已經運行pexport和dlltool在dll上以獲取.a檔案,但是這會產生相同的未定義引用。
BTW:我已閱讀下面的討論。它留下了一些含糊不清的情況,這是否可能,並給了MinGW Wiki頁面,似乎這應該是可行的。如果不可能,那就是我需要知道的。如果可以做到,我想知道我該如何解決這個問題。
How to link to VS2008 generated .libs from g++
謝謝!
謝謝,這正是我正在尋找的確認。他們有一個c接口,我正在使用它,但它比C++中的可用性要低得多。我也推動他們發佈MinGW。 – IndigoFire 2010-03-18 21:15:21
我更喜歡所有mingw發行版,因爲它使得部署非常簡單,當c-runtime依賴是通用的msvcrt.dll,而不是visual studio版本特定的運行時msvcr70.dll,msvcr71.dll,msvcr80。 DLL,msvcr90.dll和現在msvcr100.dll。 – 2010-10-16 08:33:17