c++ - GoogleTest 枚举类在 Visual Studio 2012 中不起作用

标签 c++ visual-studio-2012 c++11 googletest

我有以下枚举类:

enum class Message : qint8 {INFO = 0, WARNING = 1, NON_FATAL_ERROR = 2, FATAL_ERROR = 3, DEBUG_INFO = 4};

当我使用 Google Test 运行以下代码时(从 SVN check out ):

EXPECT_NO_THROW(
     for(qint32 i = 0; i < 10; ++i)
         logger->onIncomingMessage(mapper::Message::INFO, "Testing logging system")
);

onIncomingMessage 函数的签名是:

 void onIncomingMessage(const mapper::Message &type, const QString &report);

Visual Studio 2012 显示以下异常:

Error   1   error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > testing::FLAGS_gtest_death_test_style" (?FLAGS_gtest_death_test_style@testing@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) C:\Users\Michele\Projects\occupancymapper\build\Modules\Core\test_logger.obj
    3   IntelliSense: enum "mapper::Message" has no member "INFO"   c:\Users\Michele\Projects\occupancymapper\Modules\Core\test\test_logger.cpp 21
    4   IntelliSense: enum "mapper::Message" has no member "NON_FATAL_ERROR"    c:\Users\Michele\Projects\occupancymapper\Modules\Core\test\test_logger.cpp 30
    5   IntelliSense: enum "mapper::Message" has no member "DEBUG_INFO" c:\Users\Michele\Projects\occupancymapper\Modules\Core\test\test_logger.cpp 40
    6   IntelliSense: enum "mapper::Message" has no member "FATAL_ERROR"    c:\Users\Michele\Projects\occupancymapper\Modules\Core\test\test_logger.cpp 50
Error   2   error LNK1120: 1 unresolved externals   C:\Users\Michele\Projects\occupancymapper\build\Modules\Core\Debug\logger.exe   1

没有 GoogleTests,我类的代码可以正常工作,但是当使用 GoogleTest 时,就不行了。在 Linux 下,它可以完美运行。

我已经应用了 VARIADIC_MAX 值(设置为 10),正如此处在类似 stackoverflow question 中所建议的那样,但它不起作用。 我做错了什么?

最佳答案

看起来错误与枚举类无关 - 这些是“IntelliSense”(编辑器代码帮助)错误,而不是编译器的错误。

真正的问题是链接器找不到“testing::FLAGS_gtest_death_test_style”符号。您是否指定了要链接的 .lib 文件?使您构建了具有相同代码生成和调试级别设置的谷歌测试库(this 讨论可能会有帮助)。

关于c++ - GoogleTest 枚举类在 Visual Studio 2012 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355385/

相关文章:

c++ - 在 C++ 中为文件 I/O 包含其他文件

C++ 内存映射文件实现

c++ - NOMINMAX 与 Visual Studio 2012 MFC 项目

c++ - 使用C++11的begin()和end()函数通过参数确定数组维数

c++ - `std::filesystem::directory_iterator` 编译器问题

c++ - 如何为菱形继承实现移动构造函数?

C++:这段代码有什么作用? foo([](){bar();});

C++:对象已删除(用 new 创建)但成员函数仍在工作(?)

django - Azure SDK + Django + Visual Studio 2012 - 发布到 Azure 成功,但出现 500 错误

c# - File.Create 抛出 IOException