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

Problema con librerias.

Estas en el tema de Problema con librerias. en el foro de C/C++ en Foros del Web. Hola. Llevo revolviendome 3 horas, intentando buscar una solucion a mi problema. Al declarar mis .h en el mismo directorio, e intentar compilar me dice ...
  #1 (permalink)  
Antiguo 11/05/2010, 09:34
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Problema con librerias.

Hola.

Llevo revolviendome 3 horas, intentando buscar una solucion a mi problema. Al declarar mis .h en el mismo directorio, e intentar compilar me dice que no encuentra la funcion.

No me acuerdo exactamente como se hacia para resolver este conflicto. He instalado ubuntu hace unos dias, y hasta ahora me las pañaba con VisualStudio, en el cual apretabas un boton y ya te lo compilaba, pero ahora no me acuerdo exactamente como habia que hacerlo... Por este motivo os pido ayuda.

Aqui os dejo un ejemplo:

libre.c

Código:
#include "libre.h"

void menu () {

	printf("\n1-hola, 2-adios\n");

}
libre.h

Código:
void menu ();
principal.c

Código:
#include <stdio.h>
#include "libre.h"

int main () {

	menu();

return 0;

}
gcc -o menu principal.c -Wall -pedantic
/tmp/ccpvQm3T.o: In function `main':
principal.c:(.text+0x7): undefined reference to `menu'
collect2: ld returned 1 exit status

Última edición por Serxu; 11/05/2010 a las 10:03 Razón: Editar libre.h
  #2 (permalink)  
Antiguo 11/05/2010, 09:50
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Problema con librerias.

en el libre.h no tienes que poner

Código C++:
Ver original
  1. #include "libre.h"
  #3 (permalink)  
Antiguo 11/05/2010, 09:59
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Problema con librerias.

Ademas de la sobre inclusion del archivo .h, cuando compilas, tienes que incluir a principal.c en la compilacion, sino el compilador tiene la obligacion de reclamar porque estas invocando una funcion y nunca le diste el archivo para encontrarla, compilarla e incluirla en el ejecutable final.
  #4 (permalink)  
Antiguo 11/05/2010, 09:59
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con librerias.

Aun asi, no compila, es que me he liado copiando y pegando los codigos. xD El #include "libre.h" no lo tengo en libre.h.

Gracias
  #5 (permalink)  
Antiguo 11/05/2010, 10:02
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con librerias.

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
Ademas de la sobre inclusion del archivo .h, cuando compilas, tienes que incluir a principal.c en la compilacion, sino el compilador tiene la obligacion de reclamar porque estas invocando una funcion y nunca le diste el archivo para encontrarla, compilarla e incluirla en el ejecutable final.
Eso, si te fijas, ya lo hago. :D

gcc -o menu principal.c ...
  #6 (permalink)  
Antiguo 11/05/2010, 10:06
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Problema con librerias.

Cita:
Iniciado por Serxu Ver Mensaje
Eso, si te fijas, ya lo hago. :D

gcc -o menu principal.c ...
Eso! Si te fijas. NO lo haces.

En donde esta libre.c incluido?
  #7 (permalink)  
Antiguo 11/05/2010, 10:07
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Problema con librerias.

y si en principal.c en vez de incluir .h incluyes el .c ??

solamente para ver si así te funciona. . .
  #8 (permalink)  
Antiguo 11/05/2010, 10:08
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con librerias.

Aclaramelo porfavor. En tu anterior mensaje me pusiste que tengoq ue declarar principal.c y no libre.c

Es lo que estoy buscando. Como tengo que compilar "esto" ??
  #9 (permalink)  
Antiguo 11/05/2010, 10:11
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Problema con librerias.

Cita:
Iniciado por Serxu Ver Mensaje
Aclaramelo porfavor. En tu anterior mensaje me pusiste que tengoq ue declarar principal.c y no libre.c

Es lo que estoy buscando. Como tengo que compilar "esto" ??
En mi anterior mensaje me equivoque y dije "principal.c" cuando quise decir "libre.c"

Creo que la linea de compilacion a usar es:

gcc -o menu principal.c libre.c

en general, incluyendo todo lo que sea parte del ejecutable.
  #10 (permalink)  
Antiguo 11/05/2010, 10:12
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Problema con librerias.

siento no haber sido un poco mas claro.

queria preguntarte si al incluir en el principal.c el archivo libre.c directamente

#include "libre.c"

y no el "libre.h" , y luego intentas compilar...
  #11 (permalink)  
Antiguo 11/05/2010, 10:13
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Problema con librerias.

Cita:
Iniciado por fantasma21 Ver Mensaje
:$ siento no haber sido un poco mas claro.

queria preguntarte si al incluir en el principal.c el archivo libre.c directamente

#include "libre.c"

y no el "libre.h" , y luego intentas compilar...
Esto tambien funcionaria, pero no es la manera correcta de trabajar con un compilador de C.
  #12 (permalink)  
Antiguo 11/05/2010, 10:27
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con librerias.

Muchas gracias, me has solucionado el problema. ;)

SALUDOS
  #13 (permalink)  
Antiguo 11/05/2010, 10:28
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con librerias.

Muchas gracias, me has solucionado el problema. ;)

SALUDOS

Etiquetas: Ninguno
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:18.