今天从一个大项目里分出一个功能模块,编写成DLL文件,利用调用管理等等。反正是分出来一个DLL。
所以,文件里面的代码全都是在大的项目中编译运行通过的。
但是,经过调试添加各个lib,include,等等各种。
编译后总有错误关键字如下:
error LNK2001: __imp___CrtDbgReportW
google了一下,很多人有这个错误差不多都是一个解决办法。
像这种情况,可以推测运用了错误的运行库包。
在一程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此链接错误。
例如,编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),试图链接它们,则将得到此警告。应将所有源文件编译为使用同一运行时库。
其实就是调正编译器选项参数:/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.
其中,重点是这句:
Check your DLL versions, changing the Debug DLL settings to something else,
then change back
仔细检查项目属性。然后我发现我这个白痴,出了一个弱智错误!
在“配置属性-->C/C++-->预处理器-->预处理定义”里面,定义了 _DEBUG
这个是DEBUG的属性页设置,我当时都是直接拷贝到release里面,再修改的。这个忘记修改了。。。
记录一下吧。找了很久。。。