首页 >后端开发 >C++ >为什么我的 SDL2 Visual Studio 2015 项目中出现未解析的外部符号 __imp__fprintf 和 __imp____iob_func?

为什么我的 SDL2 Visual Studio 2015 项目中出现未解析的外部符号 __imp__fprintf 和 __imp____iob_func?

Susan Sarandon
Susan Sarandon原创
2024-11-28 09:33:10223浏览

Why am I getting Unresolved External Symbols __imp__fprintf and __imp____iob_func in my SDL2 Visual Studio 2015 Project?

SDL2 中未解析的外部符号 __imp__fprintf 和 __imp____iob_func

在 Visual Studio 2015 中编译 SDL2 项目时,开发人员可能会遇到未解析的外部符号 __imp__fprintf 和__imp____iob_func.

根本问题源于 Visual Studio 2015 对 stdin、stderr 和 stdout 的定义与以前的版本不同。在旧版 Visual Studio 中,这些被定义为指向包含三个标准 IO 流的数组的宏。但是,在 Visual Studio 2015 中,它们是使用 __acrt_iob_func() 定义的。

因此,使用以前的 Visual Studio 版本编译的依赖于 stdin、stderr 和 stdout 的旧定义的代码将遇到未定义的引用链接到使用 Visual Studio 2015 编译的库 (.lib) 时到 __iob_func()。

到解决这个问题,一种解决方案是手动将 __iob_func() 定义为包含 {stdin, stdout, *stderr} 的数组。这确保代码具有对 __iob_func() 的必要引用。

此外,任何使用 stdio 函数(例如 scanf、printf)的代码也可能会遇到无法解析的外部符号。为了解决这个问题,开发人员可以将legacy_stdio_definitions.lib 添加到他们的链接器选项中。该库提供了缺少的 stdio 函数的定义。

以上是为什么我的 SDL2 Visual Studio 2015 项目中出现未解析的外部符号 __imp__fprintf 和 __imp____iob_func?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn