[C con Clase] Unresolved external symbol referenced from module
Steven Davidson
steven en conclase.net
Jue Feb 22 22:38:03 CET 2007
Hola Abraxas,
El pasado 2007-02-22 18:03:32, ERVA escribió:
E> Hola, estoy haciendo un programita en C++ Builder. Tengo una unidad (*.cpp) y le agrego una cabecera (*.h) que implementa algunas funciones que uso (OperacionesArchivo, *.c). Pero al momento cuando la compilo me lanza el siguiente error:
E> [Linker Error] Unresolved external '_OperacionesArchivo' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\MIPROGRAMA.OBJ
E> Me pueden decir por que me lanza ese error y como es posible solucionarlo.
Sospecho que el problema está en que usas una función de C en un programa de C++. Deberías modificar tu fichero de cabecera de esta manera,
// funciones.h
#ifdef __cplusplus
extern "C" {
#endif
void OperacionesArchivo( void );
...
#ifdef __cplusplus
}
#endif
Lo que hacemos es decir al compilador y enlazador que trate el contenido entre llaves de 'extern "C"' como si fuese código escrito en C. Bajo C++, los nombres de ciertas entidades son modificadas; esto se llama decoración o codificación. Bajo C, esto no suele ser el caso. Por lo tanto, los nombres no coinciden, y el enlazador se queja.
Espero que esto te sea de ayuda.
Steven
Más información sobre la lista de distribución Cconclase