C/Visual C - DLL y Visual C++

 
Vista:

DLL y Visual C++

Publicado por Roberto_Drago (1 intervención) el 14/04/2004 17:17:55
Hola amigos. Estoy intentando crear un dll con visual c++ para ello esto siguiendo los pasos que marca visual c++.Todo me compila bien y parece que no da errores, pero no soy capaz de probarla, es decir, intento añadir esa dll a otro proyecto creado con visual c++ pero no me funciona. Se supone que esa dll hay una clase, pero cuando desde el proyecto intento instanciar esa clase me dice que no reconoce el identificador.
Gracias por su tiempo y un saludo.
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

RE:DLL y Visual C++

Publicado por JoseGR (41 intervenciones) el 15/04/2004 11:06:35
Hola, la forma de usar una dll desde otro proyecto no es incluirla, debes usar la funcion LoadLibrary() para cargar la dll, y despues GetProcAddress() para tener acceso a los elementos publicados en la dll.

Para usar una clase de una dll, hay que hacer varios pasos:
- Definir una clase virtual "CBase" preferiblemente pura, (solo por claridad).
- En la dll implementar "CMiClase" por herencia de la "CBase", implementando sus metodos virtuales.
- En la dll crear una funcion (para exportar de la dll) que cree una nueva intancia de tu "CMiClase" y se retorna como CBase, el prototipo sera algo asi: CBase CrearClase();
- En tu proyecto incluyes el archivo de cabecera CBase.hpp cargas
la dll con LoadLibrary(), y obtienes la funcion CrearBase().
- Haces la llamada CrearClase, asignando el resultado a una variable apuntador de tipo CBase , y ya puedes llamar a los metodos implementados en la dll.
- Cuando termines de usar la dll, antes debes destruir todas las instancias de los objetos de la dll, entonces debes liberar la dll con FreeLibrary()

Revisa la documentacion para los parametros especificos de las funciones de manejo de dll de Win32.

Tambien puedes usar COM o COM+ pero es mucho mas complicado.

Saludos
-
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