无法解析的外部符号__imp__fprintf和 __imp____iob_func,SDL2
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: 无法解析的外部符号 __imp__fprintf,该符号在函数 _ShowError 中被引用
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: 无法解析的外部符号 __imp____iob_func,该符号在函数 _ShowError 中被引用
1>G:\ffmpeg\simplest_ffmpeg_player-master\Debug\simplest_ffmpeg_player2_su.exe : fatal error LNK1120: 2 个无法解析的外部命令
在 Visual Studio 2015中,标准stdin,stderr,stdout定义如下:
#define stdin (__acrt_iob_func(0))
#define stdout (__acrt_iob_func(1))
#define stderr (__acrt_iob_func(2))
但在以前,它们被定义为:
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
因为在这__iob_func不再定义了,这会导致使用以前版本的Visual Studio 版本编译的. lib 文件的链接错误。
为了解决这个问题,你可以尝试定义__iob_func()
,它应该返回一个包含 {*stdin,*stdout,*stderr}
的array 。
关于stdio函数( 在我看来是 sprintf()
)的其他链接错误,可以将legacy_stdio_definitions.lib 添加到链接器选项。
FILE _iob[] = {*stdin, *stdout, *stderr};
extern"C" FILE * __cdecl __iob_func(void)
{
return _iob;
}
另外一个解决方案就是,用vs2015重新编译SDL2,使用其生成的静态库
上一篇: 工作中遇到的问题-配置内核支持ppp功能
下一篇: Hive与Hbase整合
推荐阅读
-
pcl库实现spin image配准时遇到错误,遇到的错误 无法解析的外部符号
-
Visual Studio运行C++代码遇到:“error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...“问题,该怎么办?
-
vs2015开发ffmpeg出现error LNK2019: 无法解析的外部符号
-
C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…
-
关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题
-
c++编译protobuf时提示LNK2001 无法解析的外部符号
-
obj : error LNK2019: 无法解析的外部符号 "public: __thiscall B::B(void)" ([email protected]@[email protected]),该符
-
无法解析的外部符号__imp__fprintf和 __imp____iob_func,SDL2
-
QT error: LNK2019: 无法解析的外部符号 [email protected] 类型的错误 以及 pragma comment 的作用(用法)
-
错误 LNK2019 无法解析的外部符号 “operator<<(ostream&, const Square&)“,函数main中引用了该符号