Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Creacion de Librerias Dinamicas en Linux con C++

Estas en el tema de Creacion de Librerias Dinamicas en Linux con C++ en el foro de C/C++ en Foros del Web. Hola comunidad, yo he creado mi propia libreria matematica en C y la puedo utilizar solo si edito el archivo .pro y le digo donde ...
  #1 (permalink)  
Antiguo 20/11/2008, 09:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Creacion de Librerias Dinamicas en Linux con C++

Hola comunidad, yo he creado mi propia libreria matematica en C y la puedo utilizar solo si edito el archivo .pro y le digo donde va a estar ella, me gustaria saber como lo hago mas general para simplemente decirle al programa #include <libreria.h> y pueda trabajar con ella.
Gracias de antemano.
Saludos.
  #2 (permalink)  
Antiguo 20/11/2008, 14:35
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Para ser mas preciso incluyo mi libreria en el Qt Creator e incluso me completa codigo que esta en mi libreria, el problema es cuando compilo me lanza el siguiente error: undefinded reference to 'suma(int, int)', espero su ayuda
  #3 (permalink)  
Antiguo 21/11/2008, 05:29
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

¿Esta en libreria.h el prototipo de la funcion suma? Que supongo sera algo asi (los nombres de los parametros son opcionales):

Código:
int suma(int, int);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 24/11/2008, 07:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Si mira, en el fichero libreria.h tengo las declaraciones, int suma(int, int);, despues que creo la libreria pongo el fichero.h en /usr/include que es donde estan los headers de C++ y C, copio el fichero.so para /usr/lib que es donde estan las librerias propias de aplicaciones, cuando abro el IDE e incluyo la libreria me completa la funcion suma y todo, pero cuando compilo es que me da ese error.....
  #5 (permalink)  
Antiguo 24/11/2008, 07:46
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Mmm sino encontrara el archivo entonces daria otro error (No such file or directory) con lo cual esta logrando incluirlo.

Podes probar incluyendo con "libreria.h" y poniendo el archivo en el mismo directorio que el resto de fuentes pero me da la sensacion de que eso eso tampoco va a funcionar y entonces libreria.h no coincide con la funcion que queres usar (¿Esta en un namespace por casualidad?).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 24/11/2008, 07:56
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

MIra eso lo puedo usar perfectamente si defino en el .pro donde estaran los headers o sea los .h y donde van a estar los .so, pero esa no es la idea, lo que quiero es que sea mas general de modo que en cualquier programa incluya mi libreria y trabaje con ella sin necesidad de editar el .pro... No es un namespace
  #7 (permalink)  
Antiguo 24/11/2008, 08:19
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Pone algo de codigo erroneo en el archivo.h, si se esta incluyendo entonces fallara la compilacion en el mismo. De ser asi el problema ESTA en ese archivo.

Si no tenes ganas de investigar por tu cuenta al menos publica la minima expresion del codigo problematico, es bastante complicado tratar de adivinar cual es el problema.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 24/11/2008, 08:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Hice lo que me dijistes en el .h y me dio error, o sea que lo encuentra, lo que no encuentra es la implementacion que debe estar dentro del archivo .so
MIra este es el codigo de mi .h
#ifndef _MATEM_H
#define _MATEM_H

int suma(int a, int b);
int resta(int a, int b);

#endif
y el del .c
int resta (int a, int b)
{
return a-b;
}

int suma (int a, int b)
{
return a+b;
}
  #9 (permalink)  
Antiguo 24/11/2008, 08:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Bien, es un problema al enlazar, no al compilar (el include <> esta funcionando correctamente, deberia haber buscado el error en Google ya que no lo escribiste ni correcta ni completamente). ¿Estas pasandole el nombre de la libreria en la linea de comandos al compilador (-lsuma o -l suma)?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #10 (permalink)  
Antiguo 24/11/2008, 10:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

Mira te voy a explicar en detalles, si creo un programita nuevo en un editor de texto cualquiera sigo los siguientes pasos:
1- qmake -project
2- Edito el archivo .pro y le agrego las siguientes lineas
INCLUDEPATH += /usr/include/

LIBS += -L/usr/lib/ \
-llibreria
3- qmake
4-make

Y esto me funciona perfectamente, pero si creo un nuevo proyecto ya sea en Qt Creator, Eclipse, KDevelop, etc, edito el .pro y no me funciona hago los msmos pasos a consola y tampoco me funciona, me sigue diciendo 'undefined reference to 'suma(int, int)'', no puedo ser mas detallado.
  #11 (permalink)  
Antiguo 24/11/2008, 10:45
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Creacion de Librerias Dinamicas en Linux con C++

-llibreria es necesario que lo hagas en algun lado siempre ... nunca te va a funcionar por simplemente incluir la cabecera (archivo .h).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:53.