在编译一个老的Visual studio工程时,出现了以下的报错信息:
MNCUtility.lib(MNCUtility.obj) : error LNK2001: 无法解析的外部符号 _vsprintf_s
MNCUtility.lib(MNCUtility.obj) : error LNK2001: 无法解析的外部符号 __vscprintf
MNCUtility.lib(MNCUtility.obj) : error LNK2001: 无法解析的外部符号 __vscwprintf
tinyxml.lib(tinyxml.obj) : error LNK2001: 无法解析的外部符号 _fprintf
tinyxml.lib(tinyxml.obj) : error LNK2001: 无法解析的外部符号 _sscanf_s
最终解决是参考了下面的链接解决的
由于目前环境是Visual studio 2022,需要编译的老项目是Visual studio 2012创建的,因此,出现了上述的链接问题。
出现这个问题的原因是vs2022默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。
解决办法是 项目属性->连接器->输入->附加依赖项,添加legacy_stdio_definitions.lib,解决了标准库文件不全的问题。