[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