Vinculador LNK2019 error de nuevo a un __stdcall creo que tengo el derecho lib trazó - ¿qué puedo hacer para resolver esto?
Pregunta
Trato de puerto de un LabCVI Projekt a MSVS 2010 C ++ Express. Hay una línea de código wich se lee como sigue:
if (InitCVIRTE == 0) return 0;
se produce un enlazador de error: LNK2019 "_InitCVIRTEEx @ 12" - todos encabezado correspondiente ya cuentan con las declaraciones del CPP:
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
Me trazó la parte posterior de error de estos fragmentos, que se combinaron para usted:
#define CVIFUNC __stdcall
int CVIFUNC InitCVIRTEEx (void *hInstance, char *argv[], void *reserved);
#define InitCVIRTE InitCVIRTEEx
Para resumir esto:
int __stdcall InitCVIRTEEx (void *hInstance, char *argv[], void *reserved);
Esta llamada debe ser definida en el cvirt.lib -. Wich se añade a los Librarypaths (CVI2009 \ extlib \ msvc) El error de vinculador se sigue produciendo y apenas no entiendo por qué
Debería el lib añadirse de una manera diferente? ¿Cómo se puede verificar si este es realmente el lib ¿verdad? ¿El error medio algo completamente diferente?
Solución
Es necesario decirle al enlazador lo que las bibliotecas de enlace. La ruta de búsqueda sólo se le dirá al enlazador dónde encontrar esas bibliotecas.
es decir:
Linker Libraries:
- a.lib
- b.lib
Linker Search Dirs:
C:\project_a\lib
C:\project_b\lib
enlazador buscará ambas carpetas para A.lib y b.lib pero no vinculará ninguna biblioteca que ya no haya sido dicho.
Otros consejos
De alguna manera simplemente resolvió - he añadido cvirt.lib y cvisupp.lib direktly al proyecto. El error se ha ido ahora ...
Sin embargo, todavía no estoy satisfecho porque ya di el proyecto de la ruta en la que se debe buscar bibliotecas. Voy a añadir otra pregunta a stackoverflow preguntando cuál es la diferencia.