LIB ファイルなしで C の DLL の関数を使用するにはどうすればよいですか? 関数のプロトタイプとその名前はすべて知っています。
質問する
18743 次
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 用の独自のインポート ライブラリを作成することもできます。追加の詳細はこちら:
于 2012-07-28T04:29:23.210 に答える