elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Incluir archivos de cabecera
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Incluir archivos de cabecera  (Leído 9,079 veces)
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Incluir archivos de cabecera
« en: 15 Junio 2013, 22:57 pm »

He creado una serie de archivos de cabecera para mis proyectos en c++ y hasta ahora si queria incluirlos en mi codigo debia teclear:
Código
  1. #include "nombre.h"
e incluir los archivos en la carpeta de mi proyecto. Pero resulta engorroso tener que copiar y compilar siempre los archivos cada vez asi que me gustaria saber donde tengo que copiar los archivos de cabecera para poder escribirlo asi:
Código
  1. #include <nombre.h>
y no tener que copiar siempre los archivos. Es decir, me gustaria convertir mi cabecera en una libreria normal.
He buscado informacion en google y en el foro pero no he encontrado nada que solucione mi problema. Uso linux, el compilador gcc y emacs.
Un saludo y gracias por adelantado.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #1 en: 15 Junio 2013, 23:27 pm »



Deberías estar trabajando en la teoría de cuerdas y no programando. Eso es cosa de ingenieros  ;-)

Cuando tu escribes <>, el compilador busca en la carpeta "include". Está dentro de la carpeta del compilador.

También puedes decirle al compilador que añada a su base de datos un determinado directorio.. En Codeblocks puedes configurarlo para que lo haga en todos los proyectos (o te haces una plantilla específica). Seguramente (casi 100%) emacs también lo permita (es algo bastante básico).


« Última modificación: 15 Junio 2013, 23:54 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #2 en: 15 Junio 2013, 23:55 pm »

En Linux, el compilador buscará en una serie de directorios estandarizados, entre ellos:

  • /usr/include
  • /usr/local/include

Pon tu cabecera ahí. Si además has creado una librería estática o dinámica puedes ponerla en:

  • /usr/lib
  • /usr/local/lib

y enlazar con ella con la opción "-l" de gcc.

PD: Necesitarás privilegios para escribir en esos directorios.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #3 en: 16 Junio 2013, 14:45 pm »

Deberías estar trabajando en la teoría de cuerdas y no programando. Eso es cosa de ingenieros  ;-)

En realidad es una duda para Howard. Evidentemente yo ya lo se  :P

Ahora en serio, copie los archivos de cabecera a la carpeta /usr/include pero me sigue dando error al compilar.

En Codeblocks puedes configurarlo para que lo haga en todos los proyectos (o te haces una plantilla específica).Seguramente (casi 100%) emacs también lo permita (es algo bastante básico).

Si seguramente sí pero no es eso lo que me interesa. Estuve probando a copiar la cabecera en distintos directorios pero de verdad que no encuentro que hacer. Alomejor estoy compilando mal o algo asi (aun soy bastante inexperto).
Un saludo

PD: Si al final no encuentro solucion pues crearé una plantilla y ya está.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #4 en: 16 Junio 2013, 14:48 pm »

Qué errores te da? Porque así a ciegas es difícil ayudarte.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #5 en: 16 Junio 2013, 14:53 pm »

Prueba una cosa busca los archivos de cabecera de la libreria estandar, mira a ver en que carpeta tienes alojados los stdio.h, string.h, stdlib.h, math.h etc etc. Y ahi sera donde debas poner tus bibliotecas personales.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #6 en: 16 Junio 2013, 16:26 pm »

Prueba una cosa busca los archivos de cabecera de la libreria estandar, mira a ver en que carpeta tienes alojados los stdio.h, string.h, stdlib.h, math.h etc etc. Y ahi sera donde debas poner tus bibliotecas personales.

Ese directorio suele ser /usr/include, tal como he dicho más arriba. Sería bastante raro que en su ordenador fuese otro directorio.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #7 en: 16 Junio 2013, 17:08 pm »

Asi es pero como el compañero ya ha puesto sus archivos *.h en ese directorio y sigue sin poder incluirlos en su codigo, lo unico que se me ocurre es que la carpeta include del compilador este en otro sitio o tenga otro nombre por la razon que sea.
En línea

SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #8 en: 16 Junio 2013, 19:51 pm »

Código:
g++ -o main main.cpp
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/tmp/cclBSM8A.o: In function `_main_()':
main.cpp:(.text+0x14): undefined reference to `miniwin::vredimensiona(int, int)'
main.cpp:(.text+0x39): undefined reference to `miniwin::rectangulo(float, float, float, float)'
main.cpp:(.text+0x76): undefined reference to `miniwin::texto(float, float, std::string const&)'
main.cpp:(.text+0x93): undefined reference to `miniwin::refresca()'
collect2: error: ld returned 1 exit status

Esto son los errores que da cuando intento compilar el archivo main.cpp, en el que se llaman a diferentes funciones citadas en los archivos de cabecera. Al parecer no reconoce estas funciones.
He copiado las cabeceras en el /usr/include y en la carpeta del compilador y en el codigo escribi #include <cabecera.h>. La verdad es que no se si estoy haciendo algo mal soy bastante novato programando. Alomejor estoy teniendo algun fallo tonto.

Si sirve de ayuda los archivos de cabecera en este caso son parte de un conjunto de funciones llamadas MiniWin creadas por Pau Fernández para el dibujo de diversas imagenes en consola.
Un saludo
« Última modificación: 16 Junio 2013, 19:54 pm por SrCooper » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Incluir archivos de cabecera
« Respuesta #9 en: 16 Junio 2013, 21:43 pm »

Vale, los errores son en tiempo de enlazado, lo que significa que el compilador encuentra las cabeceras. La pregunta es: hay archivos de implementación, aparte de las cabeceras? o librerías estáticas o dinámicas?

Porque lo que no encuentra el compilador es la definición de esas funciones.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines