C++ 谷歌静态测试方法c++;使用头文件

C++ 谷歌静态测试方法c++;使用头文件,c++,unit-testing,static-methods,googletest,C++,Unit Testing,Static Methods,Googletest,所以我需要使用gTest 我有一个带有静态函数的util类 头文件包含函数的偏差: class a { public: a(); virtual ~a(); static bool test(); } 在cpp文件上,实现: a::a() { } a::~a() { } bool a::test() { return true; } 在测试单元文件中,我刚刚添加了一个测试: TEST(a, a) { EXPECT_EQ(true,a::test()); }

所以我需要使用gTest

我有一个带有静态函数的util类

头文件包含函数的偏差:

class a
{
public:
    a();
    virtual ~a();

    static bool test();
}
在cpp文件上,实现:

a::a() { }
a::~a() { }
bool a::test() { return true; }
在测试单元文件中,我刚刚添加了一个测试:

TEST(a, a)
{
  EXPECT_EQ(true,a::test());  
}
我收到一个链接器错误:

Error   3   error LNK2001: unresolved external symbol "public: static bool __cdecl a::test()" (?test@a@@SA_NIPAD0@Z)    UnitTest.obj    UnitTest
如果静态函数的实现在.h文件中,那么一切都会顺利进行


有没有这样的方法来统一测试静态函数?

目前,您实现test()时没有返回类型。有时可能被解释为默认int。通过更改以下内容添加类型:

a::test() { return true; }
为此:

bool a::test() { return true; }
然而,似乎奇怪的是,编译器之前没有抱怨。编译后的文件仍有可能链接不正确


请先尝试更改代码。

您是否错过了将
.cpp
文件链接到testrunner的链接?我该如何操作?通常我是在链接dll库。@USer22999299您指的是什么dll库?您提到您在链接dll库。如果是这样的话,那么您需要为测试调用它做一些准备。如果你不这样做,链接器就无法找到实现。如果这是你第一次接触C++输出,那么这可能是一个有用的参考,那么你如何构建你的项目?什么ide?基于cmake?Visual studio 2008作为动态库