[C con Clase] Crear una librería estática

dani ddagnino en gmail.com
Jue Dic 13 18:32:51 CET 2007


Ya funciona perfectamente. 
Muchísimas gracias Steven por la ayuda.
Un saludo,
Dani.



El pasado 2007-12-12 15:39:17, Steven escribió:
 
S> Hola Dani,
S> On Dec 12, 2007 1:28 PM, dani <ddagnino en gmail.com> wrote:
S> > Hola a todos,
S> > antes de nada gracias Steven por la ayuda aunque todavía persiste el problema. Te cuento por si me quieres dar alguna otra idea.
S> > He hecho lo de incluir el #include "complejos.h" sin la dirección del archivo. Lo de decirle al enlazador donde estaba la librería libcomplejos.a ya lo estaba haciendo. Pero con este nuevo cambio obtengo los mismos errores que antes.
S> >
S> Bien. Me he puesto a hacer algunas pruebas, y he visto que estás
S> definiendo y usando funciones globales en línea o in situ (inline). Ha
S> sido un despiste mío, pero no me fijé muy bien la primera vez al ver
S> tu código que estabas usando funciones en línea.
S> La cuestión es que las funciones en línea tienen un enlazamiento
S> interno. He aquí el problema que te marca el enlazador. Básicamente,
S> esas funciones en línea no pueden ser compartidas con otros ficheros
S> objetos, pero sí internamente, en el mismo fichero objeto.
S> Todo esto significa que tienes que declarar y definir las funciones en
S> línea simultáneamente. Esto implica que no puedes separar la
S> declaración de su definición. El resultado es el siguiente:
S> // "complejos.h"
S> // Estructura.
S> struct complejo {double a,b;};
S> // Prototipo del operador + para complejos.
S> inline complejo operator+( complejo x, complejo y )
S> {
S>   complejo temp = {x.a+y.a, x.b+y.b};
S>   return temp;
S> }
S> // Funciones para complejos.
S> inline double real( complejo z )  { return z.a; }
S> inline double imag( complejo z )  { return z.b; }
S> Por cierto, sugiero usar directivas del precompilador para asegurar
S> una única inclusión de este fichero en un proyecto. El esquema vendría
S> a ser el siguiente:
S> #ifndef _COMPLEJOS_H_
S> #define _COMPLEJOS_H_
S> .
S> .
S> .
S> #endif
S> Espero que todo esto aclare la duda.
S> Steven
S> _______________________________________________
S> Lista de correo Cconclase Cconclase en listas.conclase.net
S> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
S> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


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