转自:https://blog.csdn.net/jean7155/article/details/6924806
error LNK2001: 无法解析的外部符号 __imp___CrtDbgReport
error LNK2001: 无法解析的外部符号 __imp___invalid_parameter
编译后出现按以上情况,大部分情况可以使用一下解决方法:
像这种情况,可以推测运用了错误的运行库包。
在一程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此链接错误。
例如,编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),试图链接它们,则将得到此警告。应将所有源文件编译为使用同一运行时库。
其实就是调正编译器选项参数:/MD、/MT 和 /LD
在vc8中,在“配置属性-->C/C++-->代码生成-->运行时库”中将“多线程(/MT)”统一改为“多线程调试(/MTd)”即可。
这样是编译运行通过了。但是,这样就软件就没法发布了。
接着google看看国外的。http://www.adras.com/imp-CrtDbgReportW.t1092-118.html
Its MSVC's own debugging 'breakpoint' feature which pops up the formatted
dialog box containing the error, line etc, W for unicode, hence it will be
included for practically everything you do in debug.
Check your DLL versions, changing the Debug DLL settings to something else, // 此处为重点
then change back - failing that, try importing your entire project into a
new VS8 project.
译文:
它的 MSVC 自己的调试“断点”功能会弹出格式化的
包含错误、行等的对话框,W 表示 unicode,因此它将是
包括您在调试中所做的几乎所有事情。
检查您的 DLL 版本,将调试 DLL 设置更改为其他内容, // 此处为重点
然后改回来 - 如果失败,请尝试将整个项目导入
新的 VS8 项目。
仔细检查项目属性。然后我发现我
在“配置属性-->C/C++-->预处理器-->预处理定义”里面,定义了 _DEBUG