LNK2005尝试覆盖全局new和delete运算符时出错

时间:2010-01-11 00:34:05

标签: c++ visual-studio-2005 linker-errors

我有一个C ++项目,它已经编译和链接没有问题。最近我们添加了代码来覆盖全局new和delete运算符,现在项目无法链接错误:

  

错误LNK2005:“void * __cdecl operator new(unsigned int)”(?? 2 @ YAPAXI @ Z)已定义。

我知道MS KB148652并完成了它的建议 - 我已将Nafxcwd.lib和Libcmtd.lib放在Additional Dependencies和Ignore Specific Libary列表中。实际上它们已经存在,因为我必须添加它们以消除其他先前的链接器错误。我已经确保所有.cpp文件中的第一个包含stdafx.h(如KB148652所示),但似乎没有任何效果。

如果有人可以提出另一种方法或某些方向我没有尝试过,我会很高兴知道它。提前致谢。

2 个答案:

答案 0 :(得分:1)

清理整个项目并尝试从头开始重建。

答案 1 :(得分:0)

在c ++中,重载的运算符不是通过类层次结构继承的,所以尝试在每个派生类中完全重新定义new和delete的单独副本,而不使用base_class :: operator new引用基类的定义,
我希望我能帮助你