[C con Clase] Error en compilacion: Referencia a ... sin definir
José de Paz
cplusplus en intelnet.net.gt
Mar Mayo 20 17:00:32 CEST 2014
Hola buen día,
por lo visto es lógicos los errores que te muestra:
vamos a ver sólamente el primero:
crc32.cpp:(.text+0x47): referencia a `CRC32::flagTab' sin definir
según veo tu código en el *.h (la definición):
static unsigned char flagTab; //Flag que indica si la tabla ha sido
inicializada.
y la invocación (uso en *.cpp);
void CRC32::iniTab(){
if(!flagTab){
si el error dice que está sin definir: `CRC32::flagTab' sin definir
si alguien más puede agregar: dire lo siguiente (de forma preliminar):
tienes que inicializar las variables, es decir colocarles un valor.
Saludos
__________________________
José de Paz
@_jdepaz
http://unixescuintla.blogspot.com
De Guatemala en Medellín
Technical Architect en Tata Consultancy Services
<-----Mensaje original----->
From: Facundo Curti [facu.curti en gmail.com]
Sent: 20/5/2014 1:29:04 AM
To: cconclase en listas.conclase.net
Subject: [C con Clase] Error en compilacion: Referencia a ... sin
definir
Hola lista. Como estan?
Les comento que estoy tratando de diseñar una libreria para calcular un
CRC32 de una cadena. Como no necesito crear objetos, defino todas las
funciones y variables como static.
Tengo 3 archivos. crc32.h, crc32.cpp y el main.cpp
Como es de esperar, el .h define la clase y declara funciones y
variables.
Mientras que crc32.cpp, las define.
crc32.cpp compila sin ningun error, y me da como resultado el crc32.o.
Sin
embargo, al hacer un: g++ main.c crc32.o
Me larga el siguiente error:
main.cpp: En la función 'int main(int, char**)':
main.cpp:16:8: aviso: variable 'n1' sin usar [-Wunused-variable]
crc32.o: En la función `CRC32::iniTab()':
crc32.cpp:(.text+0x47): referencia a `CRC32::flagTab' sin definir
crc32.cpp:(.text+0x55): referencia a `CRC32::poly' sin definir
crc32.cpp:(.text+0x68): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0x94): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0xa9): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0xb9): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0xc3): referencia a `CRC32::poly' sin definir
crc32.cpp:(.text+0xda): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0xf5): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0x10a): referencia a `CRC32::table' sin definir
crc32.cpp:(.text+0x126): referencia a `CRC32::flagTab' sin definir
collect2: error: ld devolvió el estado de salida 1
Les adjunto los archivos. La clase todavia no está terminada, falta la
parte mas importante. De momento solo hago un cout para comprobar que
todo
funcione correctamente antes de continuar.
Me he matado tratando de pensar que puede causar este error. Puedo
deducir
que es en la fase de linkeo, pero no entiendo a que viene el error,
puesto
que esas variables/funciones, SI estan definidas.
Tal vez pienso que estoy usando los static de forma incorrecta. O que no
está permitido trabajar con las clases de esta forma. Pero no he
encontrado nada en google que me indique lo contrario.
Espero por favor puedan ayudarme. Gracias de antemano. Saludos! ;)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140520/86fc4ddd/attachment.html>
Más información sobre la lista de distribución Cconclase