0

我正在开发一个 100% C 项目,使用 Visual Studio 2008 Express Edition 编译 Windows 端口。我的项目使用了几个 linux 库,我可以使用 MingGW 进行静态编译。

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

我可以编译我正在使用 Visual Studio 的库,但这将是一项相当大的工作,因为它们基于 autoconf 并且不提供任何项目文件。

我已经读过这个这个这个这个

4

1 回答 1

0

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

您拥有的一个优势是您在这里处理的是 C 而不是 C++ - 使用 C++ 库,您不会有机会进行这项工作,而在 C 中它可能会。我会非常小心地确保结构对齐在编译器中是相同的,然后试一试。如果链接器抱怨缺少符号,那么您已经得到了关于 RTL 真正兼容程度的答案,如果链接正常,那么,试一试。

综上所述,我从事过一个 C++ 项目,该项目有一个用 GCC 编译的 C 库(我认为是 MINGW),原因与您提到的类似。它确实有效,该软件运行良好,并且已经这样使用了很长时间。我们遇到的主要问题是库的某些构建会阻止 MSVC 可执行文件与调试信息链接;MINGW 命令行的仔细调整解决了这个问题。

于 2009-12-23T06:48:31.370 回答