[C con Clase] Error en compilacion: Referencia a ... sin definir

Facundo Curti facu.curti en gmail.com
Mar Mayo 20 08:29:04 CEST 2014


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 ------------
A non-text attachment was scrubbed...
Name: crc32.cpp
Type: text/x-c
Size: 1865 bytes
Desc: crc32.cpp
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140520/2dff12f9/attachment.bin>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: crc32.h
Type: text/x-c
Size: 1357 bytes
Desc: crc32.h
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140520/2dff12f9/attachment-0001.bin>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: main.cpp
Type: text/x-c
Size: 787 bytes
Desc: main.cpp
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140520/2dff12f9/attachment-0002.bin>


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