2011-08-07 5 views
5

WindowsのC++でdllexport、dllimportに関する質問があります。 dllexportを使用して関数をエクスポートするmodule.cppmodule.hがあるとします。 moduleWrapper.cppmoduleWrapper.hがあり、module.cppの機能をdllimportからインポートしているとします。dllimportとdllexportの間のリンク

#include module.hが私のmoduleWrapper.cppmoduleWrapper.hに書かれている理由を誰かが説明できますか?私はあなたがmodule.hにこのような何かを持って、リンカは、module.cppからの関数のアドレスについて私が理解から、任意の説明

+0

さらに詳しい情報が必要です。あなたのインポートとエクスポートがどのように見えるかのように。 –

+0

module.dllはありますか?そしてリンカのmodule.lib? –

答えて

7

を事前に感謝を知っていますかを理解することはできません。

__declspec(dllexport) void f(); 

そして、あなたはあなたのmoduleWrapper.cppで同様の声明を持っている:

関数宣言としてカウント
__declspec(dllimport) void f(); 

は、あなたがmodule.hを含める必要性を取り除きます。

#ifdef PROJECTNAME_EXPORTS // (the default macro in Visual Studio) 
#define PROJECTAPI __declspec(dllexport) 
#else 
#define PROJECTAPI __declspec(dllimport) 
#endif 

そして、このようにヘッダファイルにあなたの関数を宣言:それは一般的に行われています方法は、ファイルが含まあなたに次のコード置くことである

PROJECTAPI void f(); 

そのように、それがDLLEXPORTして翻訳しますあなたのDLLをコンパイルしているとき、そしてあなたのDLLの一部ではなくヘッダを使用しているファイルの中でdllimportするときです。

関連する問題