使用MingGW在Visual Studio中编译的静态库

时间:2009-12-23 04:50:52

标签: visual-studio compilation mingw libraries

我正在开发一个100%C项目,使用visual studio 2008 express版编译windows端口。我的项目使用了几个linux库,我可以使用MingGW静态编译。

我想知道将项目链接到这些库是否安全,以及可能遇到的问题是什么。

我可以使用visual studio编译我正在使用的库,但这可能是一些工作,因为它们基于autoconf并且不提供任何项目文件。

我已阅读thisthisthisthis

1 个答案:

答案 0 :(得分:0)

让我担心的是“静态编译”部分。如果库被编译成DLL,那么很有可能它会起作用,但是当你静态链接时,MINGW编译器会对其运行时库做出某些假设,但可能会或可能不会成立MSVC运行时库。鉴于您要求使用一个编译器编译的代码链接到另一个编译器的RTL,那么可能存在混乱。

你拥有的一个优点就是你在这里处理C而不是C ++ - 使用C ++库,你不会有机会在C中工作,只是可能。我会非常小心地确保编译器中的结构对齐是一样的,只是尝试一下。如果链接器抱怨缺少符号,那么你已经得到了关于RTL实际兼容性的答案,如果链接正常,那么试试吧。

所有这些说,我已经开发了一个C ++项目,其中有一个用GCC编译的C库(我认为它是MINGW),原因与你提到的类似。它确实有效,软件运行正常并且已经使用了很长一段时间。我们遇到的主要问题是库的某些版本会阻止MSVC可执行文件与调试信息链接;仔细调整MINGW命令行修复了这个问题。