引流
LNK2005 _DllMain@12 已经在 LIBCMTD.lib(dll_dllmain_stub.obj) 中定义
LNK2005 "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMTD.lib(delete_array.obj) 中定义
"void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(delete_scalar.obj) 中定义
"void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 LIBCMTD.lib(new_array.obj)
"void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new_scalar.obj) 中定义
写在前面
网上各种博客文章,互相抄袭,杂乱错误。
这不是一个信息透明无信息差的时代,这是一个垃圾信息遍地的时代。每次你查阅东西都只是在垃圾堆中找有用的知识而已。
另外那些抄,乱写,甚至提供错误解决办法的博主,我至以你亲切的问候,你写你**呢。
正片开始
在windows c++的开发中,经常经常遇到的就是上述问题,尤其是当你使用mfc,atl等等的时候,你就麻了,上面这个错误直接让你脑壳痛。问题出现的原因多半是你设置了在静态中使用mfc,或者你在你的项目中添加了一些文件之后,出现了这个问题。
诊断
既然是lib出问题,我们首先得看编译过程中lib的链接过程,在链接器-》命令行 输入 /verbose:lib
如此一来,生成时即可看到顺序。
再和正常用到mfc的情况进行一个对比
OK,结合错误一看,这不结了吗。uafxcwd.lib、libcmtd.lib链接顺序的问题。
解决办法
项目属性页-》链接器-》输入
debug版本
附加依赖库:uafxcwd.lib;LIBCMTD.lib;
忽略特定默认库:LIBCMTD.lib;uafxcwd.lib
release版本
附加依赖库:uafxcw.lib;LIBCMT.lib;
忽略特定默认库:LIBCMT.lib;uafxcw.lib
————————————————
版权声明:本文为CSDN博主「魔法狮子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31314583/article/details/122258209