2011-02-20 16 views
0

DLLと同様の方法でDLLを実装する際に問題があります。here です。私は仮想として宣言されたすべてのメソッドとの私のインターフェイスを持って、私はインターフェイスを実装するクラスがあり、私はクラスのオブジェクトを作成するメソッドがあります。問題はここで、私はそれを使用しようとすると "参照されていない外部シンボル"エラーが発生します。どうして?DLL関数呼び出し中に参照されていない外部シンボル

class IXYZ 
{ 
    virtual void XXX() = 0; 
}; 

class XYZ : public IXYZ 
{ 
    void XXX(); 
} 

#ifdef __cplusplus 
    extern "C" __declspec(dllexport) IXYZ* __stdcall GetIXYZ(); 
#endif 

と私は私のWin32プログラム内でそれを使用する:あなたは正しく定義されている場合、私は、DLL

+0

アプリケーションのdeclspecをdllimportに変更しましたか? –

+0

アプリケーションをビルドするときにDLLのlibファイルをリンクしましたか? –

+0

@PiorLegnicaはい私は物事をエクスポートするために標準的なビジュアルスタジオマクロを使用しています – Stefano

答えて

1

の.hファイルを含めました、私のexeファイルのプログラムでは

IXYZ *myvar = GetIXYZ(); 

DLL内の関数が正常にエクスポートされた場合、唯一のもっともらしい説明は、DLLを使用するアプリケーションで.libファイルを使用する際に問題があるということです。

+0

OK、libファイルをリンクすると動作しますが、なぜ私のlibファイルのどれかがわかりませんそれを見つけることができないと言います。 Mistery – Stefano

+0

dumpbin –

+0

で.libファイルを検査できます。libディレクトリを.libファイルが作成されたデバッグディレクトリに設定しましたが、コンパイル時にファイルが削除されて再作成されるため、エラーが発生します。現在の問題は、常に最新のlibファイルを保持するためにどのディレクトリを使用すべきですか? – Stefano

関連する問題