我正在使用Google測試框架設置一些單元測試。我在我的解決方案有三個項目:在同一解決方案上交叉處理不同項目時,Visual Studio 2008上的C++鏈接問題
- FN(我的項目)
- FN_test(我的測試)
- GTEST(谷歌測試框架)
我設置FN_test有FN和gtest作爲引用(依賴關係),然後我想我已經準備好設置我的測試了(我已經將所有人設置爲/ MTd(不這樣做會導致我之前將錯誤鏈接))。
特別是,我在FN中定義了一個名爲Embark的類,我想使用FN_test進行測試。到現在爲止還挺好。因此,我寫稱爲CLASSE使用EmbarkTest googletest,聲明一個成員踏上*和構造函數裏面寫:
EmbarkTest() {
e = new Embark(900,2010);
}
然後,F7按下時,我得到如下:
1>FN_test.obj : error LNK2019: unresolved external symbol "public: __thiscall Embark::Embark(int,int)" ([email protected]@[email protected]@Z) referenced in function "protected: __thiscall EmbarkTest::EmbarkTest(void)" ([email protected]@[email protected])
1>D:\Users\lg\Product\code\FN\Debug\FN_test.exe : fatal error LNK1120: 1 unresolved externals
不有人知道我做錯了什麼和/或我能做些什麼來解決這個問題?
編輯:從Embark.h
class Embark
{
public:
//Constructor for initial state
Embark(int _id, int _year);
//Destructor
~Embark();
/* ... */
}
Embark.cpp的相應代碼怎麼樣? – 2010-03-24 15:44:16
在嘗試鏈接微軟內部C++單元測試框架時,我遇到了與Visual Studio 2013非常類似的問題。經過一些嘗試這個問題/答案幫助了我。此外,說明明顯的單元測試在動態語言中不起作用。如果您在Python中調用未定義的函數,則單元測試失敗。如果您在C++中調用未定義的函數,那麼該項目將不會鏈接,並且根本沒有運行測試。在C++中需要採用稍微不同的TDD方法。 – 2014-05-03 15:56:17