2016-12-21 111 views
2

我在Windows10上開始使用Gtest和Gmock時遇到問題。我通常在Linux上工作,但想切換到Windows並遇到問題。在Windows上使用Gtest和Gmock

我設法根據文檔(使用Cmake和Visual Studio)構建Gmock和Gtest。我在適當的目錄中有gmock.lib和gtest.lib文件。但是當我想將它們鏈接到我的測試程序時,我可以看到許多類型爲「未定義參考」的錯誤。

我使用的命令是:

g++ "-LC:\\Users\\jacek\\cpp\\googletest\\googlemock\\Debug" "-LC:\\Users\\jacek\\cpp\\googletest\\googlemock\\gtest\\Debug" -o HelloWorld "src\\counter.o" "src\\counter_test.o" -lgmock -lgtest 

的錯誤,例如:

C:\Users\jacek\workspace\HelloWorld\Debug/../src/counter_test.cpp:14: undefined reference to testing::Message::Message()' C:\Users\jacek\workspace\HelloWorld\Debug/../src/counter_test.cpp:14: undefined reference to testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)' 

我想在此尋找和發現,也許我應該構建共享庫。我用適當的選項重建了gmock和gtest,現在我也有dll文件,但我仍然收到相同的錯誤。

我在這裏做錯了什麼?

這可能是一個問題,Linux上的庫的命名與windows不同嗎? (libgmock.a vs gmock.lib)由於這個原因,我是否應該將命令中的某些內容更改爲g ++?

我粘貼的路徑很好,文件在那裏(否則錯誤會不同)。

我在這裏錯過了什麼?

+0

好的,我解決了這個問題。事實證明,我無法用Visual Studio編譯庫,然後在G ++中使用它。我不得不切換到另一種方法,並且此視頻非常有用:https://www.youtube.com/watch?v=y9sGAF1k63o&list=PL0SUKxlBaq1COi52nuq2lPf6AbMRrn2LI&index=7 – YotKay

回答

1

好的,我解決了這個問題。事實證明,我無法用Visual Studio編譯庫,然後在G ++中使用它。我不得不切換到不同的方法,這個視頻是非常有用的:https://www.youtube.com/watch?v=y9sGAF1k63o&list=PL0SUKxlBaq1COi52nuq2lPf6AbMRrn2LI&index=7

該視頻教會如何使用gtest與Eclipse,但不使用庫,但融合cpp和h文件從gtest腳本。它工作正常。我遇到的唯一問題是我安裝了python 3.5版本,並且它在某些情況下與'fuse'腳本中使用的python 2.7不兼容,但是我設法快速糾正了這些少數情況並使其工作。

1

除了你的正確答案: 如果你想使用外部庫(如gmock或gtest),你必須編譯庫和你的程序使用相同的編譯器。這就是爲什麼你的程序拋出未定義參考的錯誤。在Visual Studio中有MSVC編譯器。如果你想使用VS,那麼只需使用VS編譯你的程序。 這還不是全部,你必須使用相同的編譯器和相同的設置(例如在調試模式下編譯)

我只是想添加到您的答案。因爲你寫道:

原來,我不能編譯庫與Visual Studio

那是錯的,你可以編譯VS庫,但你cant't把它們連接到你的程序。也許這已經很清楚了,那麼請原諒我的回答。