ビルドのための簡単なクラスをテストしようとしています(コンストラクタが適切です)。
ファイルTestClass.h
Googleテストでは、他のプロジェクトのクラスではソリューションでは動作しません。
#pragma once
class TestClass
{
public:
TestClass();
};
ファイルTestClass.cpp
#include "TestClass.h"
TestClass::TestClass()
{
}
そして、私は私の溶液中で新しいプロジェクトを追加します。tests
。このプロジェクトに含まれるファイルは1つだけです。
ファイルtest.cpp
#include <gtest/gtest.h>
#include "../Example/TestClass.h"
TEST(Test0, all)
{
EXPECT_EQ(true, true);
}
/*
TEST(Test1, part1)
{
TestClass t;
}*/
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
私はそのコードをビルドする場合 - すべてが良いです(そしてすべてのテスト)。私はコメントブロックのコメントを外した場合でも - 私はエラーが発生して、このような出力があります。
1>------ Rebuild All started: Project: Example, Configuration: Debug Win32 ------
1> TestClass.cpp
1> Example.vcxproj -> d:\Alex\documents\visual studio 2015\Projects\tests\Debug\Example.lib
2>------ Rebuild All started: Project: tests, Configuration: Debug Win32 ------
2> test.cpp
2>test.obj : error LNK2019: unresolved external symbol "public: __thiscall TestClass::TestClass(void)" ([email protected]@[email protected]) referenced in function "private: virtual void __thiscall Test1_part1_Test::TestBody(void)" ([email protected][email protected]@EAEXXZ)
2>d:\Alex\documents\visual studio 2015\Projects\tests\Debug\tests.exe : fatal error LNK1120: 1 unresolved externals
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
を私はtests
プロジェクトのリンカの入力の依存関係にgtest.lib
ファイルを追加しました。
プロジェクトtests
の依存関係としてExample
プロジェクトを追加しました。
私はExample
プロジェクトを静的ライブラリ(.lib)として構築しました。
コンストラクタをTestClass
から削除すると、すべてが有効になります。
私のプロジェクトはhereです。
私は、Windows 10 Pro x64でMicrosoft Visual Studio 2015 Update 3を使用しています。
私のGoogle Test Frameworkのバージョンは1.8.0です。
このコンパイルの問題を解決するにはどうすればよいですか?私は本当にこのコンストラクタが必要です。