10

LIB ファイルなしで C の DLL の関数を使用するにはどうすればよいですか? 関数のプロトタイプとその名前はすべて知っています。

4

2 に答える 2

12

はい、できます。GetProcAddress関数を使用して、LIB を使用せずに DLL で関数を直接呼び出す必要があります。

DLL に明示的にリンクするプロセスは、GetProcAddress を呼び出して、DLL 内のエクスポートされた関数のアドレスを取得します。返された関数ポインターを使用して、DLL 関数を呼び出します。

上記のリンクから例を引用するには:

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);
   }
}
于 2012-07-28T04:23:06.550 に答える
4

DarkXphenomenon による回答で説明されているように、LoadLibrary() と GetProcAddress() を使用できます。または、別の方法として、.def ファイルを作成し、それを LIB コマンドで実行してインポート ライブラリを生成することにより、DLL 用の独自のインポート ライブラリを作成することもできます。追加の詳細はこちら:

http://support.microsoft.com/kb/131313

于 2012-07-28T04:29:23.210 に答える