VS2019开发一个项目,报错:如下,
error LNK2001: unresolved external symbol __imp___CrtDbgReport
error LNK2001: unresolved external symbol __imp___invalid_parameter
error LNK2001: unresolved external symbol __imp___CrtDbgReportW
error LNK2001: unresolved external symbol __imp___CrtDbgReportW
error LNK2001: unresolved external symbol __imp___CrtDbgReportW
error LNK2001: unresolved external symbol __imp___free_dbg
error LNK2001: unresolved external symbol __imp___malloc_dbg
对应的中文版报错如下,
严重性 代码 说明 项目 路径 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 __imp__invalid_parameter,
错误 LNK2019 无法解析的外部符号 __imp__calloc_dbg,
错误 LNK2019 无法解析的外部符号 __imp__CrtDbgReport,
错误 LNK2019 无法解析的外部符号 __imp__free_dbg,
错误 LNK2019 无法解析的外部符号 __imp__malloc_dbg,
错误 LNK1120 5 个无法解析的外部命令
看名称,应该是某个库找不到,但到底是哪个库呢?能过搜索后发现,是ucrtd.lib这个库。
其中有时候可以用下面解决方法:
链接legacy_stdio_definitions.lib: #pragma comment(lib, “legacy_stdio_definitions.lib”)
–> PASS.
原因是VS2019将许多标准库采用内联方式处理,即不需要特别链接ucrt,所以需要特别指定使用legacy stdio lib来让链接器通过。