转发的原文链接https://blog.youkuaiyun.com/Qsir/article/details/81665293 uafxcwd.lib(afxglobals.obj) error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) already defined in MultiColorPlotCtrl.obj
上面是意思是,连接器说,我找到了两个定义,一个在 uafxcwd.lib(afxglobals.obj)里面,还有一个在MultiColorPlotCtrl.obj 。
工程中有一个MemDC.h文件,里面定义了一个CMemDC类,不巧的是,VS2010的MFC新增了这个类,所以链接时会出问题。
那怎么解决了?有如下办法:
1 修改MFC中CMemDC的名字。这个明显不行。。。
2 将emule中的CMemDC改个名字,这个方法可以,可是我找了下,貌似用这个类的文件还不少。不甘心一条条改,于是想出下面的方法。。。
3 增加一个宏定义,
#define CMemDC XCMemDC
将上面的语句加到stdafx.h的最后。(也可以在工程属性页中以编译器指令的形式定义宏,格式为 /D "CMemDC=XCMemDC")。
本文详细介绍了在使用Visual Studio 2010进行MFC开发时遇到的CMemDC类重复定义错误,该错误源于MFC库与自定义类名冲突。文章提供了三种解决方案,包括修改MFC类名、重命名自定义类以及使用宏定义来避免命名冲突,最后推荐了通过在stdafx.h文件中添加宏定义来解决问题。
3262

被折叠的 条评论
为什么被折叠?



