[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