2011-07-31 57 views
2

我的代碼出現問題。它基本上是這樣的:每次更改代碼後無法解析的外部符號

someclass.hpp:

class SomeClass 
{ 
public: 
    SomeClass(); 
    ~SomeClass(); 

    //... some other methods 
}; 

someclass.cpp:

#include "SomeClass.hpp" 
SomeClass::SomeClass() 
{ 
} 

SomeClass::~SomeClass() 
{ 
} 

SomeClass.cpp不包括其他任何東西。

構造函數實際上也是空的。我只是不想讓它們未定義或者離開標準構造函數,因爲我可能稍後需要它。

SomeClass.hpp實際上是包含在僅一個地方的遊戲狀態類:

的main.cpp

#include "SomeClass.hpp" 

int main() 
{ 
    DoSomethingWithGamestate(new SomeClass()); 
    return 0; 
} 

,並在項目包括了很多其他的文件,所有這些都是但是,與SomeClass無關。

的問題是,每當我在代碼改變任何東西,不管在哪個文件,我有,因爲如果我只編譯更改鏈接拋出這個重新編譯整個解決方案:

error LNK2001: unresolved external symbol "public: __thiscall SomeClass::SomeClass(void) (??blablaSomeClassblabla) 

顯然,這裏有一些奇怪的事情發生,因爲SomeClass()在某些class.cpp中是明確定義的。

這可能是什麼原因?

回答

1

除了@Nawaz所說的之外,很可能您的構建文件與鏈接器不同步,所以當Visual Studio重新鏈接時,它不會因爲文件不同步。只需重新構建並完成它。

順便說一下,它甚至可能是Visual Studio 2010 as seen here中的一個錯誤。

+0

我在問,因爲重建整個項目幾個變化是令人難以置信的麻煩,因爲它需要一段時間(現在大約2分鐘,這個數字肯定會隨着時間的推移相當快地增長)並減緩調試噸。有沒有辦法確保構建文件保持最新?我可以手動更新它們而無需重建整個事物嗎? – TravisG

+0

@heishe:重建是一種痛苦,是的。你可以嘗試「製作」文件。 – 2011-07-31 13:07:28