C/Visual C - Exportación de objetos desde una DLL

 
Vista:

Exportación de objetos desde una DLL

Publicado por ACM (2 intervenciones) el 03/10/2000 00:00:00
Buenas,
A ver si hay alguien que pueda ayudarme.
En un programa estoy tratando de utilizar una DLL que exporta una clase utilizando las directivas dllexport de Visual C++, naturalmente la clase la utilizo en el programa con la directiva dllimport.
Mi problema es que siempre necesito montar el sistema usando la librería estática (.lib) y me gustaría hacerlo cargando la DLL usando LoadLibrary().
Mi pregunta es ¿Cómo podría importar explícitamente la clase de esta manera? Imagino que sería necesario obtener cada método con GetProcAddress() o algo semejante pero no sé exactamente como puedo conseguirlo. ¿Tiene alguien alguna pista?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

LoadLibrary

Publicado por Fabian Sierra Carvajal (50 intervenciones) el 03/10/2000 00:00:00
Hola.
Paso Número Uno: Declarar un puntero a función que tenga el mismo prototipo
que la funcion que quieres cargar. Por ejemplo,
int (__stdcall *sendN)(SOCKET ,const char * ,int ,int);
Numero dos: usa LoadLibrary para obtener un gestor de modulo de la dll que
necesitas:

modulo=LoadLibrary("wsock32");
Numero tres: Asignar al puntero a funcion la direccion de una funcion del modulo
cargado:

sendN=(int (_stdcall *)(SOCKET ,const char * ,int ,int ))GetProcAddress(wsock32,"send");

Y puedes usar la función.
Las funciones se cargan de una manera u otra: mediante una librería de importación,
mediante un archivo de definiciones con la sentencia IMPORTS, o mediante
el matodo de carga dinamica descrito aqui. No varios metodos a la vez.

Ahora bien, esto lo he aplicado siempre al C; ignoro como cargar una DLL de
clases.
Esto es C estandar: debe funcionar en cualquier compilador. Los metodos
para crear una libreria de importacion y un archivo de definicion
varian de un entorno de desarrollo a otro. Yo utilizo Borland C++ 5.0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar