error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
答案:修改project-> setting -> General-> Mircosoft Fountation
classes为Use mfc in a shard dll
分析:原来的是“使用windows库”,这样可能多次包含了库。
技巧:查看搜索库的顺序.
For example
在头文件test.h内已经包含了#include <iostream>
而在引用test.h的文件内又包含了#include <iostream>
这时编译时会出现上述问题,通过设置将问题解决后我们还会看到编译时出现如下状况:
Compiling...
Knn.cpp
Automatically linking with winmm.lib
main.cpp
Automatically linking with winmm.lib
ReadFile.cpp
Automatically linking with winmm.lib
Linking...
Creating browse info file...
knn.exe - 0 error(s), 0 warning(s)
将引用test.h的文件的include <iostream>删除后则会出现同样的编译情况,但是并未报错,所以我们要尽量避免重复包含库文件。