La Web del Programador: Comunidad de Programadores
 
    Pregunta:  41874 - LLAMADA A UN .LIB DESDE VC++.
Autor:  Diego C.
Saludos a todos los de la lista.

Mi consulta es la siguiente, a ver si me pueden ayudar.

Tengo una librería estática (.LIB), hecha con código C estandar y compilada con Visual C++. Aparte tengo un proyecto (DLL), desarrollado en C++, hecho con Visual C++. Este proyecto necesita una función "Tdes" de la librería (.LIB), mencionada anteriormente. Hago el Include del .h de la librería e incluyo correctamente la librería .LIB en el proyecto, mediante el menú "Project - Add to Project - Files".

Cuando compilo me da el siguiente error el Linker:
error LNK2001: unresolved external symbol "int __cdecl TDes(char,char *,char *,char *)" (?TDes@@YAHDPAD00@Z)

¿Acaso, no puedo usar una librería hecha en C en un proyecto hecho en C++?, ¿o es que me falta cambiar algún parámetro en el proyecto C++ para que me coja la librería?. Repito que hago el include del .h y añado correctamente el .LIB en el proyecto.

Me urge una solución. Muchas gracias por su tiempo y su ayuda.

  Respuesta:  Hector Galarza
Encierra la declaracion de las funciones con extern "C"
ej: en el .h

#ifdef __cplusplus // asegurarte q es c++, en c da un error
extern "C" {

// tus funciones

}

#endif