首页 文章

Visual Studio 15 __imp___iob,__ imp___pctype,__ imp___mb_cur_max

提问于
浏览
12

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

错误LNK2001:未解析的外部符号__imp___iob错误LNK2019:函数错误LNK2019中引用的未解析的外部符号__imp___pctype:函数错误LNK2001中引用的未解析的外部符号__imp____mb_cur_max:未解析的外部符号_fprintf

我能够通过链接与legacy_stdio_definitions.lib来修复_fprintf错误,如下所示:unresolved external symbol __imp__fprintf and __imp____iob_func, SDL2 .

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

编辑:

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

2 回答

  • 2

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

    如果你不能这样做,你必须继续使用VS2013编译器 . (您可以使用VS2015 IDE,在项目选项中将工具集设置为vs2013 . 但您仍将受限于2013编译器支持的C功能 . )

  • 6

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

    • 链接器>输入>忽略特定的默认库:libc.lib

    • C / C>代码生成>运行时库:多线程调试(/ MTd)

    如果's not enough, there'更多在下一页:https://social.msdn.microsoft.com/Forums/en-US/841e5723-bce4-4340-b7b3-027dcdf90f00/

相关问题