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 &#34;C&#34; {#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

[0] Índice de Mensajes

Ir a la versión completa