I'm trying to compile a C++ program, written using Visual C++ 2005 and MFC, in MS VS 2010. Sadly I'm getting the following error during compilation:
Error 2 error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) already defined in CMemDCImpl.obj Project\Project\Project\uafxcwd.lib(afxglobals.obj) Project.
CMemDCImpl has a header file which contains definitions of all members of the class CMemDCImpl, and *.cpp file with their implementations. Please help me to fix this error.
You mention that you CMemDCImpl is defined in a cpp file. However, it also seems to be defined in uafxcwd.lib (a library you apparently use). I can think of two possibilities for this error:
.
namespace Foo
{
class CMemDC
{
// ...
};
}
// Usage:
Foo::CMemDC myMemDC;
Without the actual code, we can only guess. Most likely you have done one of these:
CMemDC::~CMemDC() {}
twice, maybe a copy-paste that you didn't rename to CMemDCImpl::~CMemDCImpl()
CMemDC::~CMemDC()
in a header file after CMemDC
class definition instead of in the class definitionIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With