2012-04-15 52 views
0

在我的项目中,我尝试重新加载全局运算符new和delete([])。当我尝试在第一次编译,我得到的链接错误:MS VC++编译器模棱两可

Main.obj : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) already defined in LIBCMTD.lib(new.obj)

当我试图在第二次编译,错误奇迹般地消失! 但有时会返回。 如何解决此问题?

运行时库:MTd。

代码:

void operator delete(void * pointer){LALALA} 

或者

void __cdecl operator delete(void * pointer){LALALA} 

此错误返回时我遵循的步骤:

  1. 卸下重装新的(其他)
  2. 编译
  3. 一个获得重装
  4. 尝试编译并收到此错误

在其他情况下,错误消失。这是什么原因?

+0

该文件首先编译并出现此错误。第二次,错误没有显示,因为如果文件未被修改,该文件不会被重新编译。请发布给你的错误。 – gulyan 2012-04-15 19:01:22

+0

@gulyan,已经。 – 2012-04-15 19:20:26

回答

-1

你必须隐含申报 '新' 和 '删除' 静态成员函数

void *的new操作符(为size_t大小);

void operator delete(void * p);

+0

不,静力学操作员新增和删除无呼叫=( – 2012-04-16 17:58:29