Explicitní propojení
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);
}
}