Explicitní propojování
Při použití explicitního propojení musí aplikace provést volání funkce, aby explicitně za běhu načetla knihovnu DLL.Chcete-li se explicitně propojit na knihovnu DLL, aplikace musí:
Volat LoadLibrary (nebo podobnou funkci), aby načetla knihovnu DLL a získala popisovač modulu.
Volat GetProcAddress, aby získala ukazatel na každou exportovanou funkci, kterou chce volat.Protože aplikace volají funkce knihovny DLL prostřednictvím ukazatele, kompilátor negeneruje externí odkazy, takže není nutné propojení s importní knihovnou.
Volat FreeLibrary po dokončení práce s knihovnou DLL.
Příklad:
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);
}
}