Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;VS2012中的自定义内存分配链接错误_C++_Visual Studio_Visual C++_Visual Studio 2012 - Fatal编程技术网

C++ C++;VS2012中的自定义内存分配链接错误

C++ C++;VS2012中的自定义内存分配链接错误,c++,visual-studio,visual-c++,visual-studio-2012,C++,Visual Studio,Visual C++,Visual Studio 2012,尝试覆盖VS2012中的默认内存分配函数时,出现以下链接器错误: 1> Main.obj:错误LNK2005:“void*\uu cdecl运算符新(未签名 int)”(??2@YAPAXI@Z) 已在MSVCRTD.lib(MSVCR110D.dll)中定义 1> Main.obj:错误LNK2005:“无效uu cdecl运算符删除(无效*)” (??3@YAXPAX@Z) 已在MSVCRTD.lib(MSVCR110D.dll)中定义 1> c:\users\documents\visua

尝试覆盖VS2012中的默认内存分配函数时,出现以下链接器错误:

1> Main.obj:错误LNK2005:“void*\uu cdecl运算符新(未签名 int)”(??2@YAPAXI@Z) 已在MSVCRTD.lib(MSVCR110D.dll)中定义 1> Main.obj:错误LNK2005:“无效uu cdecl运算符删除(无效*)” (??3@YAXPAX@Z) 已在MSVCRTD.lib(MSVCR110D.dll)中定义 1> c:\users\documents\visual studio 2012\Projects\CustomMemoryAllocator\Debug\CustomMemoryAllocator.exe: 致命错误LNK1169:找到一个或多个多重定义符号

这是我的代码(我没有收到intellisense错误):

#包括
使用名称空间std;
void*运算符新(大小\u t大小){
如果(void*mem=malloc(尺寸)){

无法以正确的顺序链接库

正在尝试在文件顶部添加

#pragma comment(linker, "/nodefaultlib:libc.lib")
#pragma comment(linker, "/nodefaultlib:libcd.lib")

<> >遵循指令。

尝试使用DLL而不是静态链接库。转到ProjtProjt/C++ +代码生成/运行库并选择DLL选项。


Windows将DLL或EXE称为模块。不允许模块乘法定义符号,但一个进程使用的两个不同模块可以定义同一符号。使用DLL时,运算符new()是在您和MSVC模块中定义的,不会导致错误。

太好了!您能详细说明一下问题吗?可能是一般问题?这是一个仅限于VS的问题吗?您的线路做了什么?是什么导致了这个问题?Thanks@user997112当MFC和CRT碰巧以错误的顺序获得链接时,
new的过载
delete
,失败严重。Microsoft page详细解释了原因。这些
pragma
指令用于链接器提取那些LIB是的,据我所知,这只发生在VC++上。您好-您能详细说明DLL选项与静态选项的区别/后果吗?谢谢
#pragma comment(linker, "/nodefaultlib:libc.lib")
#pragma comment(linker, "/nodefaultlib:libcd.lib")