Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Error de Vinculación

Iniciado por Phoer, 11 de Abril de 2011, 02:01:57 AM

« anterior - próximo »

Phoer

Muy buenas,

Hace varios años empecé un proyecto en Visual C++ el cual, por h o por b, dejé abandonado. Con el tiempo, le he pillado cariño al proyecto, y hoy he decidido retormarlo. Pero odio los errores de vinculación, siempre han sido mi sombra, y por mucho que los acabo solucionando mirando otros proyectos o internet, esta vez no encuentro el error...

fatal error LNK1104: no se puede abrir el archivo 'libexpat.lib'

En "Herramientas>Opciones>Proyectos y Soluciones>Directorios de VC++>Archivos de biblioteca" he añadido la dirección donde se encuentra el archivo, y en "Proyecto>Propiedades de 'proyecto'>Vinculador>General>Directorios de Bibliotecas Adicionales" también, además de en "Proyecto>Propiedades de 'proyecto'>Vinculador>Entrada>Dependencias Adicionales", donde simplemente he añadido el nombre del archivo.

He mirado en mil páginas web inglesas y españolas, exponían mil posibles casos que desembocasen al susodicho error, pero seguramente el odio que siento hacia los errores de vinculación me habrán llevado a que no pueda salir del bache sin pedir ayuda :/

Alguna idea?

jano

#1
¿La tienes añadida en modo "debug" y en modo "release"? A lo mejor has cambiado las opciones en un modo pero intentas ejecutar en otro diferente.

Y por supuesto, la pregunta de rigor. ¿Estás al 100% seguro de que la ruta en "Directorios de Bibliotecas Adicionales" es correcta?

Si nada de esto te soluciona la papeleta... creo que el error podría estar en otro lado. Podrías probar a añadirte esa librería en un proyecto nuevo, probar que siguiendo los pasos habituales todo funciona como debería. Si la añades bien es que el problema está en otra parte del proyecto y o escarbas y encuentras o te rindes y te lo reconstruyes en un nuevo proyecto. Si no, puedes trastear en el nuevo proyecto hasta que encuentres la solución.
El blog de Agurines
http://agurines.blogspot.com/

Phoer

Al añadir direcciones y tal en las opciones del proyecto está puesto como debug/release, y sí, la ruta de la librería es correcta :/ Eliminaré del proyecto todo lo relacionado con la librería y si eso lo iré reintroduciendo con cuentagotas, a ver dónde me peta .__.

Gracias :)

shephiroth

Este es un error muy comun en el VC++......antes de la universidad me pasaba bastante. Te voy a dar el mismo consejo que me dio un compañero, las vinculaciones en VC++ es mejor hacerlas en codigo que en las propiedades del proyecto..........asi te puedes mover libremente con el código y olvidarte de llevar archivos extras que segun donde los lleves te van a dar mil problemas...........problemas por no tener vinculado o por tener vinculado de mas, que la version del ordenador al que vas sea incompatible/desfasada con la version que utiliza tu codigo, etc.......

Si se hace por código hay varias ventajas añadidas:
- No te tienes q preocupar de debug/release, en ambas vincula.
- Si hay algun error, como es en codigo, el compilador es capaz de indicarte en que linea.....por ende, que vinculacion falla.
- Si hay algun error, la información suministrada suele ser mayor (archivo no encontrado o vinculación fallida).
- Al tener en código TODAS las vinculaciones, es mas fácil mover el proyecto de un equipo a otro. Sabes en todo momento que has añadido que no sea "standar".
- Esto no se si es del todo cierto (hace mucho que no vinculo), pero parece que tienes más control de cómo se hace la  vinculacion.

Saludos, y suerte :)

PD: Me olvidaba. Para vincular se hace con el siguiente comando:
#pragma comment(lib, "libreria.lib")

jano

- Si hay algun error, como es en codigo, el compilador es capaz de indicarte en que linea.....por ende, que vinculacion falla.
- Si hay algun error, la información suministrada suele ser mayor (archivo no encontrado o vinculación fallida).


"Pragma" con la librería lo único que hace en compilación es unirlos. El error te lo lanzaría el linker igualmente con lo que el mensaje por pantalla es el mismo.
Es otra forma de hacerlo, con la ventaja de que es menos engorroso en general.

Página oficial de Microsoft al respecto
El blog de Agurines
http://agurines.blogspot.com/

Phoer

Si os digo la verdad, no sé cómo lo he solucionado, aunque suele pasarme a menudo con estos errores... Como dije, eliminé para reinsertar todo el contenido que trataba con esa librería, y ahora me funciona... Bueno, tema zanjado pues






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.