Visual Studio 15 __imp___iob, __imp___pctype, __imp___mb_cur

Visual Studio 15 __imp___iob, __imp___pctype, __imp___mb_cur_max

本文关键字:imp pctype cur mb iob Studio Visual      更新时间:2023-10-16

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

错误LNK2001:未解析的外部符号__imp__iob

错误LNK2019:函数中引用的未解析的外部符号__imp__ pctype

错误LNK2019:无法解析的外部符号__imp____mb_cur_max函数

错误LNK2001:未解析的外部符号_fprintf

我可以通过链接legacy_stdio_definitions来修复_fprintf错误。无法解析的外部符号__imp__fprintf和__imp____iob_func, SDL2.

然而,我不知道如何修复其他三个未解决的外部。我该如何解决这个问题?这些库在Visual Studio 2013下可以完美地工作。

编辑:

这里有一个更新。我移动了libsvcrt。从mingw lib文件夹到Visual Studio中,并将其添加到链接器设置中。

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

如果你不能这样做,你必须继续使用VS2013编译器。(您可以通过在项目选项中将工具集设置为vs2013来使用VS2015 IDE。但是你仍然只能使用2013版编译器支持的c++特性。)

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

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

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