Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: avmiitxe en 21 Abril 2012, 17:46 pm



Título: Problema con .h y .cpp
Publicado por: avmiitxe en 21 Abril 2012, 17:46 pm
Hola, he visto muchos tutoriales de C++ donde hacian aplicaciones , creaban archivos .h y .cpp
En el main.cpp incluían el .h, pero el .cpp en ninguna parte y funcionaba el programa, yo lo hago igual y me da un error.
¿cómo sabe el compilador dónde está el .cpp si no lo ha incluido en ninguna parte?
Saludos


Título: Re: Problema con .h y .cpp
Publicado por: armizh en 21 Abril 2012, 18:13 pm
El compilador no lo sabe. Tu tienes por ejemplo los siguientes archivos:
  • Main.cpp
  • HolaMundo.cpp
  • HolaMundo.h
Tu Main.cpp incluye a HolaMundo.h y llama al constructor. En HolaMundo.h solo esta el prototipo. Al compilar, por ejemplo con gcc, compilas Main.cpp con la opcion -c que lo que hace es simplemente no enlazar. Luego compilas HolaMundo.cpp con la misma opcion. Finalmente enlazas los archivos objeto resultantes en la compilacion con el comando ld y (probablemente) la opcion -zmuldefs.
Entonces lo que haces es esto (en la consola):
Código:
g++ -c Main.cpp -o Main.o
g++ -c HolaMundo.cpp -o HolaMundo.o
ld -zmuldefs -o HolaMundo Main.o HolaMundo.o
Y luego ejecutas tu programa HolaMundo.
Como te habras dado cuenta, tu le dices explicitamente al compilador y enlazador que es lo que debe hacer.
Lo que produce confusion, es que los IDEs hacen todo esto por si solos y uno ni se entera! Por eso prefiero usar automake creando  yo mismo los makefiles o pedirle a alguien que construya las ordenes con SCons. Espero se haya entendido.

Saludos.


Título: Re: Problema con .h y .cpp
Publicado por: avmiitxe en 21 Abril 2012, 21:26 pm
Esque tengo un problema, me he descargado un juego en C++ que contiene varias archivos .h y .cpp,  en el código veo que en los .cpp se incluyen los .h, pero en ningún lado se incluyen los .cpp.
Entonces qué hago, porque el compilador me da error por eso


Título: Re: Problema con .h y .cpp
Publicado por: Eternal Idol en 21 Abril 2012, 21:43 pm
Busca el proyecto o makefile, lee la documentacion PRIMERO.