首页 >后端开发 >C++ >使用 SDL2 时,为什么在 Visual Studio 2015 中会出现无法解析的外部符号 __imp__fprintf 和 __imp____iob_func?

使用 SDL2 时,为什么在 Visual Studio 2015 中会出现无法解析的外部符号 __imp__fprintf 和 __imp____iob_func?

DDD
DDD原创
2024-12-02 05:02:12365浏览

Why Do I Get Unresolved External Symbols __imp__fprintf and __imp____iob_func in Visual Studio 2015 When Using SDL2?

Visual Studio 2015 中未解析的外部符号:__imp__fprintf 和 __imp____iob_func

在 Visual Studio 2015 中编译使用 SDL2 的程序时,您可能会遇到无法解析的问题外部符号 __imp__fprintf 和__imp____iob_func。此错误表明链接器无法解析对链接库中这些符号的引用。

以前,Visual Studio 使用 __iob_func() 及其索引定义了标准 I/O 函数(stdin、stdout、stderr)。但是,在 Visual Studio 2015 中,定义发生了变化,改为使用 __acrt_iob_func()。此更改删除了对 __iob_func() 的直接引用,导致使用旧版本 Visual Studio 编译的库时出现无法解决的符号错误。

要解决此问题,您可以:

  • 自己定义 __iob_func():为 __iob_func() 创建一个返回的自定义定义包含 {stdin,stdout,*stderr} 的数组。
  • 添加legacy_stdio_definitions.lib: 将此库添加到链接器选项中。它提供了项目中可能缺少的 stdio 函数的定义。

进行这些更改后,重新编译您的代码。无法解释的外部符号不应再出现。

以上是使用 SDL2 时,为什么在 Visual Studio 2015 中会出现无法解析的外部符号 __imp__fprintf 和 __imp____iob_func?的详细内容。更多信息请关注PHP中文网其他相关文章!

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