Partager via


Liaison explicite

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);
   }
}

Que voulez-vous faire ?

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Concepts

Liaison d'un exécutable à une DLL