【问题标题】:gtest/Google Test C++ build error on Visual Studio 2017Visual Studio 2017 上的 gtest/Google 测试 C++ 构建错误
【发布时间】:2019-02-18 20:29:03
【问题描述】:

我正在尝试在最新版本的 Visual Studio 2017 上使用 gtest 构建一个简单的测试。代码如下:

#include "pch.h"
#include <gtest/gtest.h>

struct BankAccount
{
    int balance = 0;

    BankAccount()
    {
    }

    explicit BankAccount(const int balance)
        : balance{ balance }
    {
    }
};

TEST(AccountTest, BankAccountStartsEmpty)
{
    BankAccount account;
    EXPECT_EQ(0, account.balance);
}


int main(int argc, char* argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

而构建错误是:

 Error  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.

我已经试过了:

#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

但这只会让事情变得更糟。 我不知道如何解决这个错误。

更新

我尝试在预处理器的定义中和包含的上方添加定义。都不行!!

【问题讨论】:

  • 你把#define命令放在哪里了?
  • 首先包含在上面,然后在预处理器定义的设置中。都没有用。
  • 我建议让 GTest 在没有预编译头文件的情况下工作。这将消除一组可能的问题。让 Google Test 运行后,您随时可以开启 PCH。
  • 该版本的 gtest 是否可以通过 NuGet 包下载?还是应该在别处找到?
  • 我几乎可以肯定我在 Googletest 文档的某处看到了一些关于 tr1 问题的内容,但我再也找不到了。

标签: c++ visual-studio testing googletest build-error


【解决方案1】:

尝试去:

查看 -> 属性 -> C/C++ -> 预处理器

并将预处理器定义设置为_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

另一种解决方案是通过定义_HAS_TR1_NAMESPACE 重新启用TR1。

但是,禁用错误并不是一个好主意。由于项目设置不正确,您的警告可能会出现,您应该通知 gtest 您的编译器版本支持 通过将 GTEST_LANG_CXX11 设置为 1 来更新 C++ 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多