Liaison explicite
Mise à jour : novembre 2007
Avec la liaison explicite, les applications doivent effectuer un appel de fonction pour charger explicitement la DLL au moment de l'exécution. Pour établir une liaison explicite avec une DLL, une application doit :
Appeler LoadLibrary (ou une fonction similaire) pour charger la DLL et obtenir un handle de module.
Appeler GetProcAddress pour obtenir un pointeur de fonction désignant chaque fonction exportée que l'application souhaite appeler. Comme les applications appellent les fonctions des DLL par l'intermédiaire d'un pointeur, le compilateur ne génère pas de références externes, et il n'est pas nécessaire d'établir une liaison avec une bibliothèque d'importation.
Appeler FreeLibrary quand elle en a fini avec la DLL.
Par exemple :
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);
}
}