Problemas al importar bibliotecas a mi proyecto de C++, ¿cómo solucionarlo?
Estoy usando el <XZY>
IDE para compilar mi programa y tengo algunos problemas para importar/integrar una biblioteca específica con él.
Recibo mensajes de error como
fatal error: 3rdPartyLib.h: No such file or directory
para
#include "3rdPartyLib.h"
declaración
ld.exe: cannot find `lib3rdParty.a`
para especificar
3rdParty
en las bibliotecas adicionales
Al menos recibí algún mensaje de error como
undefined reference to `lib3rdParty::foo()'
¿Qué puedo hacer para arreglar esto?
Es un error común pensar que el IDE utilizado actualmente es responsable de generar errores como los que se indican en la pregunta.
ver por ejemplo
- c++ lib en dos mismos proyectos, uno puede funcionar pero el otro no
- Problema al vincular bibliotecas libxml++ y simplista con CodeBlocks IDE para C++ Windows
- ...
El problema casi nunca está relacionado con el IDE utilizado actualmente.
En la mayoría de los casos, la solución se reduce a proporcionar al compilador/enlazador de la cadena de herramientas la ruta adecuada para buscar los encabezados incluidos y las bibliotecas vinculadas.
Una de las principales respuestas aplicables a los problemas relacionados con el enlazador es
- ¿Qué es un error de referencia indefinida/símbolo externo no resuelto y cómo lo soluciono?
- referencia indefinida a `WinMain@16'
La mayoría de los IDE comunes proporcionan funciones para configurar esto para un proyecto específico. Aquí hay algunas muestras
Eclipse-CDT
Incluir configuración de ruta:
Configuración de la ruta de búsqueda de bibliotecas y bibliotecas
Estudio visual 2013
Bloques de código
**DEV C++ (Derramado de sangre C++)
A partir de sus preguntas frecuentes:
9. ¿Cómo puedo utilizar la biblioteca OpenGL y otras?
Todas las bibliotecas que vienen con Mingw residen en el directorio Lib. Todos se nombran de la siguiente manera:
lib*.a
Para vincular una biblioteca con su proyecto, simplemente agregue Opciones del proyecto, Más archivos de opciones:
-lopengl32
Esto es para incluir lalibopengl32.a
biblioteca. Para agregar cualquier otra biblioteca, simplemente siga la misma sintaxis: escriba-l
(L en minúscula) más el nombre base de la biblioteca (nombre de archivo sinlib
y la.a
extensión).
También puede considerar poner una -L
opción allí para agregar rutas de directorio buscadas para bibliotecas.
Creador de Qt
Para agregar rutas de inclusión, debe abrir el archivo .pro y luego agregar los directorios a la INCLUDEPATH
variable. Estos caminos están separados por espacios. La referencia se puede encontrar aquí .
Si ninguno de los ejemplos anteriores se aplica a su IDE/cadena de herramientas realmente utilizada, espero que pueda entender el punto de abstracción:
Es un problema cómo proporcionar opciones de compilación/vinculación a su cadena de herramientas real. El IDE utilizado para configurar el contexto es un punto menor aquí.
Para eclipse utilizo el pkg-config
complemento siempre que sea posible:
https://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
En su defecto esta ventana de configuración: