|
VCでDLLと連携するには、呼び出すDLLの関数を
typedef void (__stdcall *関数ポインタ型名)([引数]);
のように定義し、LoadLibrary関数(MFCの場合はAfxLoadLibrary関数)で、
// SDKの場合
HMODULE hDLL = LoadLibrary("DLL名");
// MFCの場合
HMODULE hDLL = AfxLoadLibrary("DLL名");
DLLとリンクし、戻り値のhDLLがNULLでない場合、リンクに成功したので、 GetProcAddress関数で、
関数ポインタ型名 pFunc
= (関数ポインタ型名)GetProcAddress(hDLL, "DLL関数名");
のようにDLLの関数のポインタを取得し、このポインタがNULLでない場合、ポインタ取得に成功したので、このポインタを使い、次のように DLLの関数を呼び出します。
(*pFunc)(引数);
DLLを使用する必要がなくなったら、 FreeLibrary関数(MFCの場合はAfxFreeLibrary関数)を呼びます。
// SDKの場合
FreeLibrary(hDLL);
// MFCの場合
AfxFreeLibrary(hDLL);
|