Visual Studio 15 __imp___iob, __imp___pctype, __imp___mb_cur_max

Visual Studio 15 __imp___iob, __imp___pctype, __imp___mb_cur_max

我正在尝试使用 visual studio 中用 mingw 编译的库。但是,我收到以下链接器错误:

error LNK2001: unresolved external symbol __imp___iob

error LNK2019: unresolved external symbol __imp___pctype referenced in function

error LNK2019: unresolved external symbol __imp____mb_cur_max referenced in function

error LNK2001: unresolved external symbol _fprintf

我能够通过链接 legacy_stdio_definitions.lib 来修复 _fprintf 错误 post : .

但是,我不知道如何修复其他三个未解决的外部问题。我怎样才能解决这个问题?这些库在 Visual Studio 2013 下完美运行。

编辑:

好的,这是更新。我将 libmsvcrt.a 从 mingw lib 文件夹移动到 Visual Studio,并将其添加到链接器设置中。现在它似乎可以正常工作了。

这些库是针对旧版本的 CRT 编译的。您获得的未解析符号是编译库中存在的 CRT 的内部符号。您必须针对 VS2015 CRT(通用 CRT)重新编译库。但是我不确定 MinGW 是否支持这个。

做不到就得继续用VS2013编译器了。 (您可以通过在项目选项中将工具集设置为 vs2013 来使用 VS2015 IDE。但是您仍然只能使用 2013 编译器支持的 C++ 功能。)

我遇到了同样的问题(使用静态 CRT 而不是 DLL 中的 CRT 编译的库),我设法通过更改项目属性中的以下两个参数使其工作:

  • 链接器 > 输入 > 忽略特定的默认库:libc.lib
  • C/C++ > 代码生成 > 运行时库:多线程调试 (/MTd)

如果这还不够,下一页还有更多内容:https://social.msdn.microsoft.com/Forums/en-US/841e5723-bce4-4340-b7b3-027dcdf90f00/