Programación General > Visual C++
Fallo De Linkado Que No Comprendo
(1/1)
diego.martinez:
Buenas:
tengo un main en el que tengo
--- Código: Text --- #include <init.h>void main (void){ Init();}
y init.h es:
--- Código: Text --- void Init();void InitAlarm();void AlarmFunc(void *);
e init.c es:
--- Código: Text --- #include <init.h>#include <windows.h>#include <appConfig.h>#include <global.h>#include <definitions.h>#include <resource.h>#include <wndproc.h>#include <process.h> void Init(void){ AppConfig(); hfuente = CreateFont(...); //fuente //----------------------- Common Controls InitCommonControls(); //---------------------------------- Abrimos el archivo de entrada de datos if (app.DataIncome==DATA_INCOME_FILE) InitFileIncome(); InitAlarm();} bien:
el problema es que me da al compilar:
main.obj : error LNK2001: unresolved external symbol "void __cdecl Init(void)" (?Init@@YAXXZ)
Debug/MARCH.exe : fatal error LNK1120: 1 unresolved externals
y no entiendo a que se debe, en el main llamo a <init.h> en init.h prototipizo la funcion Init() y en el init.c la defino.
Alguien puede explicarme a que puede deberse? :blink: gracias por anticipado.
Eternal Idol:
Mmm me juego a que tenes Main.cpp e Init.c; Si tu proyecto es de C++ cambiar todos los modulos a .cpp y si es de C cambialos todos a .c, otra manera de solucionarlo es declarando las funciones como extern "C", el problema esta muy claro en la linea del enlazador, esta buscando esto (simbolos de tipo C++):
"void __cdecl Init(void)" (?Init@@YAXXZ)
y en realidad solo puede encontrar (simbolos de tipo C):
_Init
Cambiando solo el codigo:
--- Código: Text --- #ifdef __cplusplusextern "C" {#endif void Init(); void InitAlarm(); void AlarmFunc(void *);#ifdef __cplusplus};#endif
PD. No deberias utilizar <> sino "" para incluir archivos que deberian estar en el mismo directorio de compilacion y no en directorios por defecto ...
diego.martinez:
Es cierto, mi main es cpp y init es c. Tienes razon , muchas gracias por la ayuda.
Navegación
Ir a la versión completa