• Sábado 14 de Diciembre de 2024, 23:01

Autor Tema:  Problema con DLL y Visual C++  (Leído 1929 veces)

Kragan

  • Nuevo Miembro
  • *
  • Mensajes: 3
  • Nacionalidad: cl
    • Ver Perfil
Problema con DLL y Visual C++
« en: Miércoles 10 de Junio de 2009, 00:37 »
0
Hola,
Mi consulta es muy simple, pero ha sido una verdadera complicacion.
El problema es el siguiente:
- Deseo Crear una aplicacion que mediante una DLL llame a diversas funciones de ella.
- La DLL creada fue hecha en Visual C++ (Visual Studio 2008).
- La aplicacion, es una aplicacion simple de consola que solo mostrara el resultado del método llamado desde la DLL.

Lo que sucede es que no me funciona simplemente me salen errores con respecto a la vinculación del DLL a mi programa, debido a que hice en las referencias del proyecto un link->input al .lib del dll.
Mi dll la cree con un proyecto Win32 elijiendo el modo DLL, con privilegios de EXPORT, para ser las funciones llamadas desde otros programas.

La DLL es la siguiente en "agregar.h"

Código: C++
  1. #ifdef AGREGAR_EXPORTS
  2. #define AGREGAR_API __declspec(dllexport)
  3. #else
  4. #define AGREGAR_API __declspec(dllimport)
  5. #endif
  6. // This class is exported from the agregar.dll
  7. class AGREGAR_API Cagregar {
  8. public:
  9. void Hola(void);
  10. // TODO: add your methods here.
  11. };
  12. extern AGREGAR_API int nagregar;
  13. AGREGAR_API int fnagregar(void);
  14.  




el archivo agregar.cpp




Código: C++
  1. void Cagregar::Hola()
  2. {
  3. std::cout<<"nHola Mundo";
  4. }
  5.  


Esto me compila y me genera el .lib y .dll sin ningun error ni problemas.
El problema surge cuando quiero llamarla desde mi programa principal hecho en C++.
Me podrian dar porfavor detalladamente la forma de hacer que mi programa principal acepte y llame a la funcion "Hola()" de la DLL.
Simplemente he leido miles de sitios y de especificaciones pero no he podido hacerlo...
Si me ayudaran se los agradeceré mucho...


PD: Otras consultas. Deben estar los .dll y .lib en la misma carpeta del proyecto de la aplicacion?, o como les doy el path en caso contrario?.

Daniel...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con DLL y Visual C++
« Respuesta #1 en: Miércoles 10 de Junio de 2009, 09:29 »
0
Mostra los errores ... yo acabo de hacer dos archivos partiendo de tu ejemplo y tengo un ejecutable que imprime "Hola Mundo":

Código: Text
  1. void main()
  2. {
  3.   Cagregar p;
  4.   p.Hola();
  5. }
  6.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kragan

  • Nuevo Miembro
  • *
  • Mensajes: 3
  • Nacionalidad: cl
    • Ver Perfil
Re: Problema con DLL y Visual C++
« Respuesta #2 en: Miércoles 10 de Junio de 2009, 20:22 »
0
hola... Gracias por tu respuesta...
pero una consulta...
Este codigo que posteaste es del .exe? o del .dll?
me imagino que del .exe verdad?

y como lo linkeaste?... si me puedes dar los pasos por que creo que es alli donde no lo estoy haciendo correctamente....
El .lib y el .dll deben estar en el mismo directorio del .exe¿?
Yo lo que hago...
Es crear (el exe) un proyecto CLR de consola, luego utilizo el Project-> Properties->linker-> Input->Aditional Dependencies :  y a agrego el nombre del .lib
y por si las dudas pongo en el Linker->General->Aditional Library Directories: El path de mi proyecto conteniendo los .lib .lik .dll etc...

Uso visual studio 2008...
Ojala me puedas ayudar...
Saludos
Chau gracias amigo...
« última modificación: Miércoles 10 de Junio de 2009, 20:38 por Kragan »

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con DLL y Visual C++
« Respuesta #3 en: Miércoles 10 de Junio de 2009, 20:34 »
0
Con el .lib es suficiente para generar el ejecutable, agregalo en las opciones del proyecto (yo lo compile a mano), y necesitas la .dll para poder ejecutarlo claro.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kragan

  • Nuevo Miembro
  • *
  • Mensajes: 3
  • Nacionalidad: cl
    • Ver Perfil
Re: Problema con DLL y Visual C++
« Respuesta #4 en: Miércoles 10 de Junio de 2009, 20:39 »
0
y como lo linkeaste?... si me puedes dar los pasos por que creo que es alli donde no lo estoy haciendo correctamente....
El .lib y el .dll deben estar en el mismo directorio del .exe¿?
Yo lo que hago...


Es crear (el exe) un proyecto CLR de consola, luego utilizo el Project-> Properties->linker-> Input->Aditional Dependencies : y a agrego el nombre del .lib
y por si las dudas pongo en el Linker->General->Aditional Library Directories: El path de mi proyecto conteniendo los .lib .lik .dll etc...



Uso visual studio 2008...
Ojala me puedas ayudar...
Saludos
Chau gracias amigo...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con DLL y Visual C++
« Respuesta #5 en: Miércoles 10 de Junio de 2009, 20:43 »
0
Lo hice todo a mano. ¿Podes pegar el ERROR EXACTO?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.