VS 2017命令行错误 D8004

6

我已经没有其他选择了,我正在尝试在Visual Studio 2017 Community上使用GoogleTest,但是它给了我很多警告:

warning C4996:'std::tr1':warning STL4002:非标准的std::tr1命名空间和仅限于TR1的机制已被弃用并将被删除。您可以定义_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING来确认您已收到此警告。

我想要抑制它,因此我进入我的项目属性 -> C/C++ ->高级 ->抑制特定警告,然后我尝试:

/wd4996
/wdSTL4002,
/wd4996;
/wdC4996
/wd[4996]...

等等,我真的尝试了每种可能的组合,但仍然出错了

2>cl:命令行错误D8004:'/wd'需要一个参数

有人能够告诉我需要写什么来抑制这个错误吗?

6个回答

7
根据错误信息,您可以在命令行中添加一个#define等效项:
/D:_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

这相当于在源文件的第一行之前插入。
#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING  1

1
#define添加到预编译头文件中确实起作用了,不知道为什么VS之前不愿意合作呢? - Weeedooo
在文件顶部添加了定义后仍然出现错误。 - KulaGGin

6
请按照以下步骤操作:
  1. 点击工具栏中的View。

  2. 在底部选择properties。

3.选择c/c++ -> Preprocessor。

4.将Preprocessor Definitions设置为_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING。


1
我知道这个问题已经有答案了,但是为了回答你的问题,如果你只是简单地添加4996,而不是/wd[4996](或任何其他变体)。

你只需要添加4996。


1
沉默警告从来不是一个好的选择。在这种情况下,关于 tr1 的警告似乎源于不正确的项目配置。您可以尝试定义 GTEST_LANG_CXX11 以使 gtest 使用来自 std 命名空间的内容,或者跟踪这些警告的来源并找出为什么它们仍然被发出。

0
如果您不想修改项目设置,可以在stdafx.h中添加#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1。这对我有效。

0
我通过进入 项目属性 > 配置属性 > C/C++ > 预处理器 > 预处理器定义 并将 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 添加到预处理器定义中,来修复此错误: enter image description here

之后gtest终于成功构建。

但在文件顶部添加 #define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1 和在单击项目时的附加预处理器定义中添加也没用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接