[英]LNK 2005 in Visual C++ in Visual Studio 2010
我正在尝试编译在MS VS 2010中使用Visual C ++ 2005和MFC编写的C ++程序。遗憾的是,我在编译期间遇到以下错误:
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有一个头文件,其中包含类CMemDCImpl的所有成员的定义,以及包含其实现的* .cpp文件。 请帮我修复此错误。
您提到CMemDCImpl是在cpp文件中定义的。 但是,它似乎也在uafxcwd.lib(您显然使用的库)中定义。 我可以想到这个错误的两种可能性:
。
namespace Foo
{
class CMemDC
{
// ...
};
}
// Usage:
Foo::CMemDC myMemDC;
没有实际代码,我们只能猜测。 很可能你做过以下其中一种:
CMemDC::~CMemDC() {}
两次,也许你没有重命名为CMemDCImpl::~CMemDCImpl()
的复制粘贴CMemDCImpl::~CMemDCImpl()
CMemDC
类定义之后而不是在类定义中的头文件中实现CMemDC::~CMemDC()
我使用的解决方案:将已知且使用良好的CMemDC类重命名为CMemDc
因为微软粉碎了它,基思或我们自己没有受版权保护吗?!?
在vs2k10中,微软敢于粉碎基思的CMemDC类名称。
昨天出生的微软家伙:这是自1997年以来每个人都使用的最受欢迎的课程之一! 毛! 羞辱你,微软!
CMemDc - 内存DC
//作者:基思规则
//电子邮件:keithr@europa.com
//版权所有1996-1997,Keith Rule
谢谢基思! 那些“后盖茨”的“新”和“灾难性”家伙希望我们改变我们所有来源的每一个“CMemDC”。真可惜
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.