-4

我正在做一个小项目,试图让 Source Engine 2013 代码在 Qt Creator IDE 下工作。我的最终目标是把它变成一个 CMake 项目来抛弃 Valve 有限的 VPC 系统,虽然我还不知道它是如何工作的,所以我正在采取简单的步骤。

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

Valve 有这个 memoverride.cpp 它有一个 char *__cdecl _strdup( const char *string ),如果我把它注释掉,代码编译得很好,所以这是我要处理的最后一个问题。

从这个函数“覆盖”我得到以下两个错误:

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

C2732:链接规范与“MemAlloc_StrDup”的早期规范相矛盾

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

那么有人有什么想法吗?

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

4

1 回答 1

0

MemAlloc_StrDup您对/的重复定义所遇到的问题strdup可能是由于您不能有两个strdup. 没有 MSVC++ 编译器选项可以精确解决这个问题。

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

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

于 2016-03-30T11:03:29.183 回答