VS 2017 命令行错误 D8004

VS 2017 Command line error D8004

我别无选择,我正在尝试在 Visual Studio 2017 社区上使用 GoogleTest,但它给了我很多

warning C4996: 'std::tr1': warning STL4002: The non-Standard std::tr1 namespace and TR1-only machinery are deprecated and will be REMOVED. You can define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING to acknowledge that you have received this warning.

我想抑制它,所以我进入我的项目属性 -> C/C++ -> 高级 -> 抑制特定警告并尝试

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

等等,老实说,我尝试了每一种可能的组合,但它让我失望

2>cl : Command line error D8004: '/wd' requires an argument

有人可以准确地向我发送我需要在那里写的内容来抑制这个吗?

根据报错信息,可以添加一个#define相当于命令行:

/D:_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

相当于在源文件的第一行之前插入

#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING  1

静音警告从来都不是一个好的选择。在这种情况下,有关 tr1 的警告似乎是由不正确的项目配置引起的。您可以尝试定义 GTEST_LANG_CXX11 以使 gtest 使用来自 std 命名空间的内容或跟踪这些警告的来源并找出它们仍然发出的原因。

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

您只需添加 4996。

请按照以下步骤操作:

  1. 单击工具栏中的“查看”。

  2. Select 属性.. 在底部。

3.Select c/c++ -> 预处理器。

4.Set 预处理器定义为 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

我通过进入 Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions 并将 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 添加到预处理器定义来修复此错误:

经过这次gtest终于搭建成功

当我单击项目时,在文件顶部和附加预处理器定义中添加 #define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1 没有帮助。

如果你不想更改项目设置,可以添加#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1 到 stdafx.h 如果你有的话。 它对我有用。