c++ - 如何在 Visual Studio 中使用 MingW 编译的库?

标签 c++ visual-studio mingw

我有一个用 MinGW 编译的库 foo.a。它应该在 Windows 中工作,因为它是跨平台库 (LibVNCServer)。配置时,我使用了标志 -static--disable-shared。 但是,当我尝试在 Visual Studio 中包含 foo.a 时,出现如下错误:

unresolved external symbol ___chkstk_ms
unresolved external symbol _snprintf
unresolved external symbol _jpeg_CreateCompress

如何在 MinGW 中编译源文件,以便生成的库文件可以在 Windows 中运行?我只需要包含所有依赖项的库,这样我就可以在 Windows 上的 Visual Studio 中无错误地链接它。请帮忙。

最佳答案

库不仅依赖于平台,还依赖于工具集。当你有一个用编译器 A 编译的库时,你不能假设它能与用编译器 B 编译的程序一起工作。

编译器之间存在差异,例如函数名称不同。

  • 调用约定
  • 堆所有权
  • 注册存档

任何非平凡的代数都可能导致引用除法等特定于编译器的运行时函数。

使静态库 foo.a 可用于 VS 的最安全方法是使用 VS 从源代码编译它。

关于c++ - 如何在 Visual Studio 中使用 MingW 编译的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139425/

相关文章:

c++ - 如何以编程方式确定网卡是虚拟网卡?

c++ - 为每次 c++ 创建一个障碍

c# - 比较两个列表<string>之间的差异

c++ - 无法使 qmlRegisterType 工作

c - 使用 Eclipse SPARC bare-C 编译器未找到 "windows.h"

c++ - 为什么在所有数据类型中 int 都依赖于操作系统或编译器

c++ - 作为 C++ 库 API 一部分的第三方类型和潜在的 ABI 不一致

.net - .tt 文件的语法高亮显示?

c++ - 删除 pointers-to-const 的行为在过去是否发生了变化?

c++ - 在 Windows 8 上使用 Code::Blocks 设置 SFML