DLL 内の呼び出したい API が以下の型の場合
BOOL WINAPI HogeHogeAPI(int nIndex, LPSTR lpszBuf);
// 目的の関数(API)へのポインタを宣言(ここで typdedef を使えばもっと便利)
// BOOL (WINAPI * lpHogeHogeAPIEntryPoint)(int, LPSTR); // 素の宣言方法
typedef BOOL (WINAPI *LPFNHOGEHOGEAPI)(int, LPSTR); // typedef宣言方式
^^^^^^^^^^^^^^^
↓
ここは自由に名前を決める
// 目的の DLL をロード
HINSTANCE hLib = LoadLibrary("XXXXXX.DLL");
if(hLib < (HINSTANCE)HINSTANCE_ERROR) {
// エラー処理
}
// DLL 内の HogeHogeAPI の関数アドレスを取得する
// FARPROC lpHogeHogeAPIEntryPoint;
LPFNHOGEHOGEAPI lpHogeHogeAPIEntryPoint; // 関数へのポインタ宣言
lpHogeHogeAPIEntryPoint =
(LPFNHOGEHOGEAPI)GetProcAddress(hLib, "HogeHogeAPI");
if (lpHogeHogeAPIEntryPoint == NULL) {
// エラー処理
}
// DLL の HogeHogeAPI の呼び出し
BOOL bRet = (*lpHogeHogeAPIEntryPoint)(0, "ABCDEFG");
FreeLibrary(hLib); // DLL をメモリから解放します。
LoadLibrary の方式では,Lib(インポートライブラリ)は必要ない.
参照