Vinculación explícita

Con la vinculación explícita, las aplicaciones deben realizar una llamada a función para cargar explícitamente el archivo DLL en tiempo de ejecución.Para una vinculación explícita a un archivo DLL, una aplicación debe:

  • Llamar a LoadLibrary (o a una función similar) para cargar el archivo DLL y obtener un identificador de módulo.

  • Llamar a GetProcAddress para obtener un puntero a función para cada función exportada a la que la aplicación desee llamar.Como las aplicaciones llaman a las funciones del archivo DLL mediante un puntero, el compilador no genera referencias externas, por lo que no hay necesidad de vincularse a una biblioteca de importación.

  • Llamar a FreeLibrary cuando se haya acabado de utilizar el archivo DLL.

Por ejemplo:

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

¿Qué desea hacer?

¿Qué más desea saber?

Vea también

Conceptos

Vincular un ejecutable a un archivo DLL