Exportación de funciones de C para usarlas en ejecutables del lenguaje C o C++
Si tiene funciones en una DLL escrita en C, puede usar una macro de preprocesador para facilitar el acceso desde el lenguaje C y el código de lenguaje C++. La macro de preprocesador __cplusplus
indica qué lenguaje se está compilando. Puede usarlo para declarar las funciones con vinculación de C cuando se llama desde código de lenguaje C++. Si usa esta técnica y proporciona archivos de encabezado para el archivo DLL, los usuarios de C y C++ podrán usar estas funciones sin cambios.
En el código siguiente se muestra un archivo de encabezado que pueden usar las aplicaciones cliente de C y C++:
// MyCFuncs.h
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif
__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();
#ifdef __cplusplus
}
#endif
A veces es posible que tenga que vincular funciones de C al archivo ejecutable C++, pero los archivos de encabezado de declaración de función no han usado la técnica anterior. Todavía puede llamar a las funciones desde C++. En el archivo de código fuente de C++, ajuste la directiva #include
para evitar que el compilador decore los nombres de función de C:
extern "C" {
#include "MyCHeader.h"
}