Principales respuestas
Problema dependencia de librerias

Pregunta
-
Hola a tod@s,
Tengo una solución de Visual Studio 2008, donde el proyecto principal es un proyecto main.DLL. Este proyecto DLL enlaza y depende de otro proyecto "acq.dll", y este "acq.dll" utiliza funciones de una DLL externa dinamicamente.
El problema que tengo es que todo me compila bien, pero el linkador me arroja el siguiente error:
Error 1749 fatal error LNK1104: cannot open file 'GCBase_MDd_VC80_v2_0.lib' MAINDLL MAINDLL
O sea, parece ser que el proyecto principal también tiene dependencias a esa librería externa, pero en realidad en el proyecto principal yo no estoy usando nada de esa librería. Sólo la utilizo desde el proyecto secundario "acq.dll"
Qué es lo que me está ocurriendo? qué hago mal?
Respuestas
-
No, el problema debe estar en que en las opciones del proyecto, tienes esa dependencia pero te falta el fichero. Prueba a borrar ese nombre de fichero LIB en las opciones del linker.
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/- Marcado como respuesta mambonegro martes, 7 de junio de 2011 10:51
Todas las respuestas
-
No, el problema debe estar en que en las opciones del proyecto, tienes esa dependencia pero te falta el fichero. Prueba a borrar ese nombre de fichero LIB en las opciones del linker.
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/- Marcado como respuesta mambonegro martes, 7 de junio de 2011 10:51
-
-
-
No, ese no es el problema. Vuelvo a repetir que si añado las bibliotecas en todos los proyectos la solución acaba linkando bien. El problema es que me pide que incluya la biblioteca en proyectos donde no se usa, pero que sí la usa un proyecto dependiente.
-
Vamos a ver.
Ese lib es lo que se llama una biblioteca de importación, que le dice al compilador dónde están, dentro de la DLL, casa función publicada, por tanto es necesaria en cada uno de los proyectos que usen dicha DLL.
Ahora bien, si cargas la DLL con LoadLibrary y accedes por punteros (o por ordinales, que todavía es más antiguo), entonces no te hace falta.
Léete esto de mi blog:
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/ -
Parece que no me explico bien...
El proyecto con el que tengo problemas de linkaje no hace referencia en ningún momento a esa librería. Pero depende de otro proyecto que sí utiliza esa librería. Lo normal sería que sólo agregase la librería en el proyecto que hace uso de ésta, pero sin embargo parece que por dependencias o algo así también me la pide el segundo proyecto.
-
Alguna dependencia tiene que tener, porque si no el enlazador no necesitaría dicha biblioteca de importación.
Vamos a ver. ¿El proyecto con el que tienes el problema de enlazado, carga o no carga esa DLL o hace referencia a ella de alguna forma? Si es no, resulta muy extraño... casi te diría que el Visual Studio se ha hecho la picha un lío. Limpia la solución y borra los ficheros temporales a ver.
MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/ -