を使用するときに未定義のシンボル私は確かに私のセットアップ私のGTEST環境であれば、正しくないです。 EXPECT_EQ
と普通のTEST
の場合は、すべてうまくいきます。しかし、私がTEST_F
のような好きなものを試してみると、リンカは苦情を言います。GTEST - TEST_F
ソースコード:
class MyTest : public testing::Test
{
protected:
static const int my_int = 42;
};
TEST_F(MyTest, test)
{
EXPECT_EQ(my_int, 42);
}
そして、これが
Undefined symbols for architecture x86_64:
"MyTest::my_int", referenced from:
MyTest_test_Test::TestBody() in instruction_test.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [tests/tests/run_tests] Error 1
make[2]: *** [tests/tests/CMakeFiles/run_tests.dir/all] Error 2
make[1]: *** [tests/tests/CMakeFiles/run_tests.dir/rule] Error 2
make: *** [run_tests] Error 2
これがなぜ起こるか任意のアイデアを与えますか?
、それは、Googleのテストとは何の関係もありません。クラス宣言からのすべての静的クラスメンバーをインスタンス化(定義)する必要があります。 – glagolig