dllexport、 dllimport

Microsoft 固有の仕様 →

dllexport と dllimport のストレージ クラス属性は C、および C++ 言語に Microsoft 固有の拡張です。DLL から、または関数、およびオブジェクト データをエクスポートおよびインポートしたりするために使用できます。

__declspec( dllimport ) declarator __declspec( dllexport ) declarator

解説

これらの属性は、実行可能ファイルまたは別の DLL となるクライアントに明示的に DLL インターフェイスを定義します。宣言は dllexport がモジュール定義ファイル (.def) の必要がありませんすると、少なくとも関数。エクスポート関数の仕様に関して。dllexport の属性は __export のキーワードを置き換えます。

クラスのマークが付けられた declspec (dllexport) の場合、クラスの階層のクラス テンプレートの特殊化でも、declspec (dllexport) として自動的にマークされます。これは、クラス テンプレートが明示的にインスタンス化され、クラスのメンバーを定義する必要が生じます。

関数のdllexport は、修飾された名前で関数を公開します。C++ 関数の場合、これは名前の利点とが含まれます。C の関数または extern "C" として宣言されている関数の場合、呼び出し規約に基づくプラットフォーム固有の装飾が含まれます。名前の装飾が不要な場合は、.def ファイル (EXPORTS のキーワード) を使用します。

dllexport または dllimportを宣言すると、[extended attribute syntax] と __declspec のキーワードを使用する必要があります。

使用例

// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();

また、コードが読みやすくするために、マクロ定義を使用する:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;

詳細については、次のトピックを参照してください。

END Microsoft 固有

参照

関連項目

__declspec

C++ のキーワード