我有一个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所示),但似乎没有任何效果。
如果有人可以提出另一种方法或某些方向我没有尝试过,我会很高兴知道它。提前致谢。
答案 0 :(得分:1)
清理整个项目并尝试从头开始重建。
答案 1 :(得分:0)
在c ++中,重载的运算符不是通过类层次结构继承的,所以尝试在每个派生类中完全重新定义new和delete的单独副本,而不使用base_class :: operator new引用基类的定义,
我希望我能帮助你