Exportar funções do C para usar em executáveis da linguagem C ou C++
Se você tiver funções em uma DLL escrita em C, poderá usar uma macro de pré-processador para facilitar o acesso a partir da linguagem C e do código da linguagem C++. A macro de pré-processador __cplusplus
indica qual linguagem está sendo compilada. Você pode usá-la para declarar as funções com vinculação C quando chamada a partir do código da linguagem C++. Se você usar essa técnica e fornecer arquivos de cabeçalho para sua DLL, essas funções poderão ser usadas por usuários de C e C++ sem alterações.
O código a seguir mostra um arquivo de cabeçalho que os aplicativos cliente C e C++ podem usar:
// 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
Às vezes, você pode precisar vincular funções C ao seu executável C++, mas os arquivos de cabeçalho de declaração de função não usaram a técnica acima. Você ainda pode chamar as funções de C++. No arquivo de origem C++, encapsule a diretiva #include
para evitar que o compilador decore os nomes das funções C:
extern "C" {
#include "MyCHeader.h"
}