Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como se trabaja con librerías dinámica en Visual C++ 2005?

Estas en el tema de Como se trabaja con librerías dinámica en Visual C++ 2005? en el foro de C/C++ en Foros del Web. Me gustaría saber eso, porque mi librería ya me compila (y sale el .dll) pero ahora para probarla necesito un programa que se enlace con ...
  #1 (permalink)  
Antiguo 05/07/2007, 22:26
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 22 años, 2 meses
Puntos: 4
Como se trabaja con librerías dinámica en Visual C++ 2005?

Me gustaría saber eso, porque mi librería ya me compila (y sale el .dll) pero ahora para probarla necesito un programa que se enlace con esta.

Yo sabia que era necesario hacer una librería de importación en .lib y enlazar con ella, ya que esta hace referencia a los símbolos en la .dll desde mi aplicación, pero cuando compilo mi librería sale el .dll y no veo la librería de importación por ninguna parte.

En resumen, como se trabaja con librerías en Visual C++ 2005, si tienen un tutorial o algo, se los agradecería.
__________________
Blog | Tecnosquad
  #2 (permalink)  
Antiguo 05/07/2007, 22:59
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Como se trabaja con librerías dinámica en Visual C++ 2005?

Pues se supone es de esta manera. yo como desde hace tiempo no uso Windows pues ya no se si siga siendo asi.

Se supone que para enlazar una libreria a un programa tienes de 2 sopas: estaticamente o dinamicamente.
Estaticamente solo necesitas el .lib, que lo unico que hace es pegarse a tu programa principal.
Dinamicamente necesitas el .lib y el .dll.
En los dos necesitas un archivo de cabecera .h.

Entonces en tu codigo principal añades la cabecera de tu libreria(algo.h) y en la primer linea le pones algo como

#pragma comment(lib, "algo.lib");

y con eso te enlaza, solo que debes de asegurarte que el algo.dll este presente a la hora de ejecucion.

no se de que manera este compilando tu, pero se supone que al compilar una dll, te sale el archivo .lib y aparte la .dll.
Ya viste bien todas las carpetas a ver si no quedo por ahi?
Estas compilando en Debug o Release?
Ya viste las opciones del Visual Studio alguna donde aparezca algo relacionado al .lib?

Saludos
  #3 (permalink)  
Antiguo 06/07/2007, 03:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 163
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Como se trabaja con librerías dinámica en Visual C++ 2005?

Tenes que exportar alguna funcion(con __declspec(dllexport) ) sino no te genera el lib. Eso siempre y cuando sea un proyecto nativo, no .NET.
  #4 (permalink)  
Antiguo 06/07/2007, 15:32
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 22 años, 2 meses
Puntos: 4
Re: Como se trabaja con librerías dinámica en Visual C++ 2005?

pero si le pongo el __declspec(dllexport) a lagun método, no va a afectar el código en otros compiladores?

Mi idea es que el mismo código se pueda ocupar en varios entornos, y de hecho funciona ahora en mingw32 en windows y gcc en linux sin problemas.
__________________
Blog | Tecnosquad
  #5 (permalink)  
Antiguo 06/07/2007, 17:34
Avatar de Yaraher  
Fecha de Ingreso: abril-2007
Ubicación: Lima, Perú
Mensajes: 262
Antigüedad: 17 años, 8 meses
Puntos: 9
Re: Como se trabaja con librerías dinámica en Visual C++ 2005?

Lo puedes colocar entre condicionales del compilador para que sólo se use en caso de estar en Win32 ;)
  #6 (permalink)  
Antiguo 06/07/2007, 19:32
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 22 años, 2 meses
Puntos: 4
Re: Como se trabaja con librerías dinámica en Visual C++ 2005?

que define es especifico para VC++8 ?

porque si pongo win32 quizás me reclame el mingw
__________________
Blog | Tecnosquad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:25.