c++ - 尝试使用谷歌测试编译 main 时获取 "multiple definition of func_name"

标签 c++ googletest

我有一个简单的 .cpp 文件,如下所示:

void showMenu()
{
    std::cout << "Hi!";
}

int main()
{
    showMenu();
    return 0;
}

此外,我有一个空的 google-test,如下所示:

TEST(Name, SubName)
{

}

当我尝试编译时,我得到:

multiple definition of `showMenu()'

和:

multiple definition of `main()'

错误。 我该如何设置我的配置,以便我能够在我去的时候运行我的 main,并在我想要的时候运行我的 google-test,而不会相互冲突?

最佳答案

googletest 库已经包含了 main() 的定义。

要解决这个问题,请将您对 showMenu() 的定义分离到另一个库中,并将该库分别链接到您的测试运行程序和生产性可执行文件。

并且不要#include您的.cpp文件中包含测试代码。

关于c++ - 尝试使用谷歌测试编译 main 时获取 "multiple definition of func_name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52190174/

相关文章:

c++ - 尝试使用 fstream 打开文件但它不起作用

c++ - c++思维中遇到的友元迭代器和友元类迭代器有什么区别?

c++ - 为什么 Google Test/Mock 通过 std::unique_ptr 显示泄露的模拟对象错误?

c++ - 在 Google Test 中,我可以从构造函数中调用 GetParam() 吗?

c++ - 使用 googletest 的 EXPECT_NO_THROW 和 std::array 的编译错误

c++ - C++ 中的千位分隔符

c++ - 为什么 cin.getline 会分配给字符数组,但使用 '=' 却不会?

c++ - 如何编写没有参数包的可变参数函数?

c++ - GoogleTest run_all_tests 找不到测试夹具

c++ - 自动生成谷歌模拟方法?