C++ 重新定义strdup\函数已经有一个主体

C++ 重新定义strdup\函数已经有一个主体,c++,linker,strdup,C++,Linker,Strdup,我正在做一个小项目,试图让源引擎2013代码在Qt Creator IDE下工作。我的最终目标是把它变成一个CMake项目,扔掉Valve有限的VPC系统,尽管我还不知道它是如何工作的,所以我采取了简单的步骤 我习惯于在MSVC++2013编译器下编译,所以这就是我正在使用的,我遇到了最后一个问题,我不知道如何处理。我首先要说的是,如果它没有在预期的编译器下正确编译,我显然是做错了,我不应该修改代码 Valve有一个memoverride.cpp,它有一个char*uu cdecl\u strd

我正在做一个小项目,试图让源引擎2013代码在Qt Creator IDE下工作。我的最终目标是把它变成一个CMake项目,扔掉Valve有限的VPC系统,尽管我还不知道它是如何工作的,所以我采取了简单的步骤

我习惯于在MSVC++2013编译器下编译,所以这就是我正在使用的,我遇到了最后一个问题,我不知道如何处理。我首先要说的是,如果它没有在预期的编译器下正确编译,我显然是做错了,我不应该修改代码

Valve有一个memoverride.cpp,它有一个char*uu cdecl\u strdup(const char*string),如果我把它注释掉,代码编译就可以了,所以这是我要处理的最后一个问题

从这个函数“override”中,我得到以下两个错误:

C2084:函数“char MemAlloc_StrDup(const char)”已经有一个主体

C2732:连杆规格与“MemAlloc_StrDup”的早期规格相矛盾

有人知道我应该使用什么必要的编译器选项、一些应该排除的默认库或预处理器定义来解决这个问题吗?我尝试在VisualStudio中编译代码,并禁用了抑制的启动横幅,以便可以看到它传递的所有选项,但我尝试了所有选项,但似乎没有任何区别

有人知道吗


任何信息都将不胜感激,谢谢

重复定义
MemAlloc\u StrDup
/
StrDup
的问题可能是因为不能有两个
StrDup
的定义。没有MSVC++编译器选项可以精确地解决这个问题

它可能在其他编译器上“起作用”,因为“一个定义”规则不要求编译器以致命错误消息退出,甚至不发出警告。但是MSVC++完全有权拒绝这一点


MSVC++允许您不链接其标准库。这不可能解决你的问题,因为它是一个完全或无选择的选项。

TL,C++的C++版本。然而,如果你打算建议我用extern“C”或其他什么来编辑代码,那不是我想要的答案。来吧,没那么长。是的,大部分都是华夫饼干。“我习惯于在MSVC++2013编译器下编译,所以这就是我正在使用的”我不会继续争论这个问题,因为我只是问了一个问题,但我正在使用的编译器肯定是最相关的。是的,开始部分有点背景风格。但时间一点也不长。这里的人阅读的代码行比我在问题中写的要多,字符也要多。