gpt4 book ai didi

C++: error LNK2019: 未解析的外部符号 __snprintf 在函数中引用

转载 作者:行者123 更新时间:2023-11-30 01:54:53 27 4
gpt4 key购买 nike

我正在尝试编译一个项目,但出现此错误:

1>project.obj : error LNK2019: unresolved external symbol __snprintf referenced in function "unsigned char * __cdecl GetResource(char *,unsigned long &)" (?GetResource@@YAPAEPADAAK@Z)
1>Release/file.bin : fatal error LNK1120: 1 unresolved externals

我正在使用 VC++ 2010 并尝试使用 CodeBlocks 进行编译,但出现了类似的错误:

windres.exe  -J rc -O coff -i C:\Users\x\Desktop\project\project\File.rc -o .objs\File.res
windres.exe: no resources
Process terminated with status 1 (0 minutes, 0 seconds)

我的项目目录中有 File.rc,但它是 0kb,我不知道如何解决这个问题。

我很确定这与代码中的某些内容无关,所以我没有发布示例,但如果您需要,我会发布。

最佳答案

我知道这篇文章很旧,所以这是我对这个问题的回答,以防有人遇到同样的问题

printf 和 scanf 函数系列现在是内联定义的。

所有 printf 和 scanf 函数的定义都已内联移动到 、 和其他 CRT header 中。对于在本地声明这些函数而不包括适当的 CRT header 的任何程序,这是一个重大更改,会导致链接器错误(LNK2019,未解析的外部符号)。如果可能,您应该更新代码以包含 CRT header (即添加 #include )和内联函数,但如果您不想修改代码以包含这些 header 文件,另一种解决方案是添加一个额外的链接器输入 legacy_stdio_definitions.lib 的库。

要将此库添加到 IDE 中的链接器输入,请打开项目节点的上下文菜单,选择“属性”,然后在“项目属性”对话框中选择“链接器”,然后编辑链接器输入以将 legacy_stdio_definitions.lib 添加到分号分隔的列表。

如果您的项目链接到使用早于 2015 版的 Visual C++ 编译的静态库,链接器可能会报告未解析的外部符号。这些错误可能引用 _iob、_iob_func 的内部 stdio 定义,或以 imp* 形式引用某些 stdio 函数的相关导入。 Microsoft 建议您在升级项目时使用最新版本的 Visual C++ 编译器和库重新编译所有静态库。如果该库是源代码不可用的第三方库,您应该从第三方请求更新的二进制文件,或者将该库的使用封装到一个单独的 DLL 中,您使用旧版本的 Visual C++ 编译器编译该 DLL和图书馆。

System_CAPS_warning警告

如果您正在链接 Windows SDK 8.1 或更早版本,您可能会遇到这些未解析的外部符号错误。在这种情况下,您应该通过将 legacy_stdio_definitions.lib 添加到链接器输入来解决错误,如前所述。

关于C++: error LNK2019: 未解析的外部符号 __snprintf 在函数中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com