2011-08-16 25 views
0

私はVS 6で書かれたコードのセットを持っています。私はVS 2008のCLIラッパーを書くことを試みています。私はVS6ヘッダーファイルをCLIコードに入れてコンパイルしました。

コンパイル中は

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

エラーでメソッドとクラスを検索したとき、それはコードに対応しています。解決方法LNK2001

ヘッダーファイル。私は

virtual void SomeMethod(SomeObject& os) {}; 
として開閉中括弧を追加することによって、ヘッダファイルで宣言を行うと

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

CPPファイル

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


のsomeMethodは実際ParentClass

からオーバーライドされます

エラーが表示されなくなります。しかし、それは2つの体を持つ1つの方法につながるので、私はそれをすることはできません。なぜこの動作ですか?どのように私はこれを克服するのですか?または、CLIにBS6ヘッダーを含めて#pragmaを置く必要がありますか?

+0

テンプレートが含まれていますか?それはすべてを変えるからです。私はそうではないと思うだろうが、確かめると思った。 –

答えて

2

あなたのプロジェクトに「CPPファイル」は含まれていないようですね。それはまたあなたが2つのボディを持っているときにエラーを起こさない理由を説明します。これをチェックするには、CPPファイルに故意にコンパイルエラーを入れてみてください。コンパイラがCPPファイルをコンパイルしていないことを証明すると文句を言っていない場合。

+0

はい、私はしませんでした。私はそれを含める必要があることを知りませんでした。ありがとう。 –

+0

他にもCPPファイルを含める必要はありませんか? –

+0

非常に奇妙な質問です。 「インクルード」とはどういう意味ですか?あなたは間違いなくこの '#include" file.cpp "'を実行すべきではありませんが、コードをコンパイルするようにコンパイラに指示する必要があります。私はあなたがこれをする必要がないと思う理由を想像することはできません。あなたはたぶんあなた自身をもう少し説明しなければならないでしょう、ここには私が理解していないものがあります。 – john

関連する問題