pregunta sobre compilacion y enlace

Iniciado por flony, 28 Diciembre 2012, 20:04 PM

0 Miembros y 1 Visitante están viendo este tema.

flony

hola amigos ...creo no estar infringiendo las normas del foro con la pregunta que hare, no estudio para programador y estando de vacaciones me dije vamos a leer un libro de c++ "como programar en c++" de deitel...y ustedes son los unicos que me pueden dar una mano...no tengo profes...bue al grano mi pregunta
cap.3.9 pag 128
" el programador de la implemntacion de una clase, responsable de crear una clase LibroCalificaciones reutlizable, crea un archivo de encabezado LibroCalificaciones.h y el codigo fuente LibroCalificaciones.cpp que incluye( mediante #include) el archivo de encabezado y despues compila al archivo de codigo fuente para crear el codigo objeto de LibroCalificaciones. Para ocultar los detalles de la implementacion de las funciones mienbro de LibroCalificaciones, el programador de la implementacion de la clase proporciona al programador del codigo cliente el archivo de encabezado LibroCalificaciones.h (que especifica la interfaz y los miembros de datos de la clase )y el codigo objeto para la clase LibroCalificaciones (que contiene las instrucciones en lenguaje maquina que representan a las funciones miembro de LibroCalificaciones). El programador del codigo cliente no recibe LibroCalificaciones.cpp por lo que desconoce como se implementan las funciones miembros de LibroCalificaiones"
....bueno la pregunta, trate de compilar LibroCalificaciones.h y LibroCalificaciones.cpp pero no se puede porque ninguna tiene la funcion main()...como se hace ?
si un problema no tiene solucion entonces no es un problema...es algo inevitable

avesudra

Suponiendo que entiendes el uso de las clases, éstas no pueden ser compiladas así por así sin un main si quieres crear un ejecutable, otro caso sería el de una librería pero no es este el caso. Para compilarlas lo que tienes que hacer es darle uso a esas clases dentro del main.No puedes compilar las clases por si solas sin darles un uso , para que lo entiendas es como compilar funciones solamente, sin usarlas.
Regístrate en

flony

claro eso es lo que me parecio raro...es que hay un tercer codigo fuente .cpp y ese tiene el main...pero segun lo que dice el libro ese archivo lo maneja el cliente, y nosotros se lo dariamos compilado sin el main  :rolleyes:
si un problema no tiene solucion entonces no es un problema...es algo inevitable

flony

#3
mil gracias a rir3760, ajr784 y  .xAk. ;-) ;-) ;-)
me dijo que leyera sobre programación modular y eso me llevo a leer sobre bibliotecas estáticas....y esa es la solución a tener un archivo.h un archivo.cpp sin la función main()
si a alguien le sirve yusa visual un tutorial
http://msdn.microsoft.com/es-es/library/ms235627(v=vs.80).aspx
si un problema no tiene solucion entonces no es un problema...es algo inevitable

0xDani

Ademas de librerias estaticas tambien hay librerias dinamicas. O creias que la libc tiene un main()?
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

flony

cosas raras...si lo sabia, pero como nunca programe una no se me ocurrio
si un problema no tiene solucion entonces no es un problema...es algo inevitable

dooque

#6
Buenas!

Claro que se puede compilar un archivo .cpp (con o sin un .h asociado) y sin la necesidad de crear una "biblioteca de enlace estático" (que es justo lo que el libro te pide).

Lo que se hace, en este caso desde una linea de comando, es:


c++ -c archivo.cpp -o archivo.o


Con esto se compila "archivo.cpp" a código objeto (máquina) que luego puede ser enlazado a cualquier programa.

PD: Una biblioteca de enlace estático (".a" ".lib") es una colección de código objecto, i.e. un conjunto de archivos ".o"

Saludos.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan

flony

una pregunta es para visual studio?
y si no es así me enseñarías a hacerlo en visual  ;)
si un problema no tiene solucion entonces no es un problema...es algo inevitable

dooque

Ese es el compilador que trae MinGW (http://www.mingw.org/) para C++.

Nunca he usado Visual Studio, no tengo ni idea que compilador usa!

Saludos.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan