2011-08-16 28 views
0

我有一組代碼寫在VS 6中。我試圖爲VS 2008編寫一個CLI包裝器。我在CLI代碼中包含了一個VS6頭文件並進行了編譯。

編譯時我得到

LNK2001: unresolved external symbol "public: virtual void __thiscall Someclass::SomeMethod(SomeObject& os)

當我搜索錯誤的方法和類時,它對應於代碼,如何解決LNK2001

頭文件。

class SomeClass: public ParentClass 
{ 
    virtual void SomeMethod(SomeObject& os); 
} 

CPP文件

void SomeClass::SomeMethod(SomeObject& os) 
{ 
//Implementation here 
} 


的someMethod實際上是從父類

重寫時,我做的頭文件中的聲明中加入一個開閉花括號

virtual void SomeMethod(SomeObject& os) {}; 

錯誤消失。但我不能這樣做,因爲它會導致一種方法有兩個機構。這是爲什麼?我如何克服這一點?或者是否需要在CLI中包含BS6頭文件時使用#pragma?

+0

是否有涉及的模板?因爲這改變了一切。我不假設,但我想我會確定。 –

回答

2

聽起來像你沒有在你的項目中包含'CPP文件'。這也可以解釋爲什麼當你有兩個身體時你不會得到一個錯誤。要檢查此嘗試在CPP文件中發生故意的編譯錯誤。如果編譯器沒有抱怨,證明你沒有編譯CPP文件。

+0

是的,我沒有。我不知道我需要包括這一點。謝謝。 –

+0

有沒有其他方法可以讓我不需要包含那些CPP文件? –

+0

一個很奇怪的問題。 'include'是什麼意思?你絕對不應該這樣做'#include「file.cpp」'但你應該告訴你的編譯器編譯你的代碼。我無法想象爲什麼你會認爲你不需要這樣做。你可能需要多解釋一下自己,這裏有一些我不瞭解的東西。 – john