程序是MFC程序,选择在静态库中使用MFC,重载了new 与 delete,链接时出现下面的错误:
TestDlg.obj 是我的程序中的源代码编译出来的。
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 TestDlg.obj 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 TestDlg.obj 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 TestDlg.obj 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 TestDlg.obj 中定义
重载new 与 delete:
下面的代码位于TestDlg.cpp中
#ifndef _DEBUG // 只在Release下有效
void* __cdecl operator new(size_t nSize)
{
return malloc(nSize);
}
void* __cdecl operator new[](size_t nSize)
{
return malloc(nSize);
}
void __cdecl operator delete(void* p)
{
free(p);
}
void __cdecl operator delete[](void* p)
{
free(p);
}
#endif