[C con Clase] Problema: [linker error] undefined reference to

Salvador Pozo salvador en conclase.net
Jue Dic 2 14:53:52 CET 2010


El pasado 2010-12-02 11:07:33, mai escribió:
 
m> Al final lo he solucionado, tenía que añadir al linker unos archivos .a
m> No se muy bien porqué pero es la única manera de que me funcione.

Hola:

Es lógico.

Las biblioteca estáticas tienen diferentes nombres según el compilador. Los compiladores de Borland y de Microsoft usan la extensión ".lib", GCC usa ".a". GCC es el compilador que usan por ejemplo Dev-C++ y Code::Blocks.

No se debe confundir el fichero de cabecera (.h) con la biblioteca. El fichero de cabecera contiene la definición de clases, estructuras y prototipos para poder usar la biblioteca desde nuestros programas. El fichero de biblioteca contiene el código objeto de las funciones o clases de la biblioteca, y se debe enlazar con el resto de nuestro programa.

Por eso el compilador no da error cuando se incluyen los ficheros de cabecera, pero el enlazador sí, cuando no se incluyen los ficheros de biblioteca.

Incluso cuando se usan bibliotecas dinámicas (dll) es necesario incluir en el enlazador los ficheros ".a". En este caso la biblioteca estática no contiene el código objeto de las funciones o clases, sino una tabla de saltos y las funciones necesarias para buscar la dll o cargarla en memoria y acceder a sus funciones.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase