我试图将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