[C con Clase] cargar y usar una dll win32 con visua lstudio

Steven Davidson srd4121 en njit.edu
Lun Mayo 11 22:27:16 CEST 2009


Hola Juanan,

Juan Antonio Hernández Álvarez wrote:
> Hola buenas mi duda es la siguiente tengo una dll que quiero cargar 
> desde mi programa main y usar sus funciones.
> 
> Dispongo de una biblioteca dll llamada biblioteca.dll y un archivo en
> el que estan dichas funciones de la dll bibiloteca.h
> 
> Como podria cargarla para poder usar dichas funciones desde mi
> programa.
> 

Para enlazar dinámicamente una biblioteca, tienes dos métodos: 
implícitamente a través del enlazador o explícitamente usando las 
funciones del API de MS-Windows.

Para enlazar implícitamente la DLL, necesitas un fichero ".lib", que 
puedes crearlo a partir de la misma DLL. Este fichero es una biblioteca 
de importación que el enlazador puede usar en su enlazado. Agrega tal 
fichero al proyecto, para que el enlazador pueda usarlo.

Explícitamente, invocaríamos 'LoadLibrary()' para cargar la DLL para 
luego obtener y asignar cada función exportable de la DLL invocando 
'GetProcAddress()'. Por ejemplo,

typedef double (*PFSUMA)(double,double);
typedef double (*PFRESTA)(double,double);
typedef double (*PFMULT)(double,double);
typedef double (*PFDIV)(double,double);
...
HMODULE hDLL  = LoadLibrary( "biblioteca.dll" );

PFSUMA suma   = GetProcAddress( hDLL, "suma" );
PFRESTA resta = GetProcAddress( hDLL, "resta" );
PFMULT mult   = GetProcAddress( hDLL, "mult" );
PFDIV div     = GetProcAddress( hDLL, "div" );

Ahora puedes usar estas 4 funciones normalmente. Por ejemplo,

double n = div( suma( 4, 5.2 ), resta( 4, 5.2 ) );


Espero que esto te oriente.

Steven





Más información sobre la lista de distribución Cconclase