Share via


__declspec(dllimport) を使ったアプリケーションへのインポート

あるプログラムが DLL によって定義されたパブリック シンボルを使うことを、シンボルをインポートすると言います。 ビルドに DLL を使用するアプリケーション用のヘッダー ファイルを作成するときは、パブリック シンボルの宣言で __declspec(dllimport) を使用します。 キーワード __declspec(dllimport) は、エクスポートに .def ファイルと __declspec(dllexport) キーワードのどちらを使用した場合でも機能します。

コードを読みやすくするには、__declspec(dllimport) に対してマクロを定義して、そのマクロを使用してインポートされる各シンボルを宣言します。

#define DllImport   __declspec( dllimport )

DllImport int  j;
DllImport void func();

関数の宣言での __declspec(dllimport) の使用は省略可能ですが、このキーワードを使用すると、コンパイラによって生成されるコードがより効率的になります。 ただし、インポートする実行可能ファイルで DLL のパブリック データ シンボルとオブジェクトにアクセスする場合は、__declspec(dllimport) を使用する必要があります。 DLL を使う場合は、引き続きインポート ライブラリとリンクする必要があることに注意してください。

DLL とクライアント アプリケーションには、同じヘッダー ファイルを使うことができます。 こうする場合は、DLL のビルドとクライアント アプリケーションのビルドの区別を示すために、専用のプリプロセッサ シンボルを使います。 次に例を示します。

#ifdef _EXPORTING
   #define CLASS_DECLSPEC    __declspec(dllexport)
#else
   #define CLASS_DECLSPEC    __declspec(dllimport)
#endif

class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };

目的に合ったトピックをクリックしてください

さらに詳しくは次のトピックをクリックしてください

関連項目

アプリケーションへのインポート