【发布时间】:2015-10-11 08:20:55
【问题描述】:
我正在尝试在 Visual Studio 中使用用 mingw 编译的库。但是,我收到以下链接器错误:
错误 LNK2001:未解析的外部符号 __imp___iob
错误 LNK2019:函数中引用了无法解析的外部符号 __imp___pctype
错误 LNK2019:函数中引用了未解析的外部符号 __imp____mb_cur_max
错误 LNK2001:无法解析的外部符号 _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 中,并将其添加到链接器设置中。现在它似乎可以正常工作了。
【问题讨论】:
-
MinGW 团队有很多工作要做,以使他们的 .h 文件与 CRT 的 VS2015 版本兼容。不要为此屏住呼吸,你可能会被 VS2013 版本卡住一段时间。
-
在我标记以下答案之前,是否有任何快速破解方法可以让它工作?根据这个:stackoverflow.com/questions/30412951/…,可以通过定义 __imp___iob 返回某种数组来解决 __imp___iob 错误。如何修复其他两个链接器错误以及如何定义该数组?
-
您只会以一种很难诊断的方式破坏 C 运行时函数。不要去那里。
-
我在不小心尝试用x64库编译x86项目时也发现了这种问题。
标签: c++ linker visual-studio-2015 legacy stdio