Collegamento esplicito

Con il collegamento esplicito, le applicazioni devono effettuare una chiamata di funzione per caricare in modo esplicito la DLL in fase di esecuzione. Per collegarsi a una DLL in modo esplicito, un'applicazione deve procedere come descritto di seguito.

  • Chiamare LoadLibrary o una funzione analoga per caricare la DLL e ottenere un handle di modulo.

  • Chiamare GetProcAddress per ottenere un puntatore per ciascuna funzione esportata che l'applicazione intende chiamare. Poiché le applicazioni chiamano le funzioni della DLL tramite un puntatore, il compilatore non genera riferimenti esterni evitando di dover effettuare il collegamento con una libreria di importazione.

  • Chiamare FreeLibrary dopo avere terminato le operazioni relative alla DLL.

Di seguito è riportato un esempio:

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

Scegliere l'argomento con cui si desidera procedere

Scegliere l'argomento su cui visualizzare maggiori informazioni

Vedere anche

Concetti

Collegamento di un eseguibile a una DLL