error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib

环境WIN10+VS2010。

之前写代码时,需要调用windowsAPI,引用了#include <windows.h>。接下来为了返回CString,引用了#include <afxwin.h>。

第一次报错:

error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

解决方法:

1.在创建工程时,勾选MFC;

2.已经创建工程,可以修改project属性:配置属性->常规->MFC使用:选择 在静态库中使用MFC。

再次编译第二次报错哭

fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

网上很多case解释说,错误在于<windows.h>和<afxwin.h>不能同时使用,需要注释掉#include <windows.h>,

可是注释掉之后又会出现很多对于<windows.h>的错误。

所以,有另一种方式解决这个问题:

出现这个错误实际上是VS编译顺序上的问题,把#include <afxwin.h>改在第一行写即可。

接下来再次编译,第三次报错骂人

error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib

解决方法:

再次修改project属性:配置属性->常规->MFC使用:选择 在动态DLL中使用MFC。

这点小问题,耽误了我一个多小时的时间...真心无语了。不怕丢人,晒出来给大家参考,希望像我一样的新手出现相似问题时能够尽快解决!

 

https://blog.csdn.net/kulala082/article/details/53485899

posted on 2023-02-26 01:17  lydstory  阅读(124)  评论(0编辑  收藏  举报

导航