[C con Clase] al separar una clase en .h y .cpp: error undefined reference to

Miguel Olave molavec en gmail.com
Jue Jun 10 22:12:54 CEST 2010


Gracias Manuel:

    Efectivamente, era eso el problema. Era obvio que era la compilación 
pero no sabía que estaba mal, pero no sabía en donde estaba 
específicamente el problema. Me ahorras un buen par de horas.

Vale!

Miguel.



Manuel L. wrote:
> El pasado 2010-06-10 16:47:27, Miguel Olave escribió:
>  
> MO> Hola:
> MO> Lo que intentó es separar una clase en un archivo .h y otro .cpp, el 
> MO> problema es que cuando lo hago me aparece el siguiente error:
> MO> g++ main.o -o main
> MO> main.o: In function `main':
> MO> main.cpp:(.text+0xb1): undefined reference to 
> MO> `DSP_Register::showRegOptions(char*, unsigned int)'
> MO> collect2: ld returned 1 exit status
> MO> make: *** [main] Error 1
> MO> Este es mi make file:
> MO> main: main.o
> MO>     g++ main.o -o main
> MO> main.o: main.cpp DSP_Register.o
> MO>     g++ -c -I ./reg_management main.cpp -o main.o
> MO> DSP_Register.o: ./reg_management/DSP_Register.cpp \
> MO>     ./reg_management/DSP_Register.h \
> MO>     ./reg_management/TXCON.h
> MO>     g++ -c -I ./reg_management ./reg_management/DSP_Register.cpp -o 
> MO> DSP_Register.o
> MO> y los archivos están en este orden:
> MO> ./main.cpp
> MO> ./reg_management/DSP_Register.h
> MO> ./reg_management/DSP_Register.cpp
> MO> ./reg_management/TXCON.h
>
>
> Hola, Miguel Olave: el problema está en que cuando gcc realiza el enlazado (invocación g++ main.o -o main) sólo le pasa una parte del código, main.o; y no todo. Debe pasarle a mayores el archivo DSP_Register.o, que contiene el código restante. Simplemente es llamar a g++ main.o DSP_Register.o -o main.
>
> Saludos,
>
>                                                                            Fefu.
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>   




Más información sobre la lista de distribución Cconclase