次の方法で共有


明示的なリンク

更新 : 2007 年 11 月

明示的リンクの場合、アプリケーションは実行時に DLL を明示的に読み込むために、関数呼び出しをする必要があります。DLL と明示的にリンクするには、アプリケーションは、以下の手順を実行します。

  • LoadLibrary (または、同様の関数) を呼び出して、DLL を読み込み、モジュール ハンドルを取得します。

  • GetProcAddress を呼び出して、アプリケーションが呼び出す各エクスポート関数への関数ポインタを取得します。アプリケーションは、ポインタを通じて DLL の関数を呼び出すので、コンパイラは外部参照を生成しません。このため、インポート ライブラリとリンクする必要はありません。

  • DLL の終了時に FreeLibrary を呼び出します。

たとえば、次のようにします。

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
...

HINSTANCE hDLL;               // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer
DWORD dwParam1;
UINT  uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
   lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
                                           "DLLFunc1");
   if (!lpfnDllFunc1)
   {
      // handle the error
      FreeLibrary(hDLL);       
      return SOME_ERROR_CODE;
   }
   else
   {
      // call the function
      uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
   }
}

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

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

参照

概念

DLL と実行形式のリンク