Export funkcí jazyka C pro použití ve spustitelných souborech jazyka C nebo C++
Pokud máte funkce v knihovně DLL napsané v jazyce C, můžete pomocí makra preprocesoru usnadnit přístup z jazyka C i kódu jazyka C++. Makro __cplusplus
preprocesoru označuje, který jazyk se kompiluje. Můžete ho použít k deklaraci funkcí s propojením jazyka C při zavolání z kódu jazyka C++. Pokud použijete tuto techniku a poskytnete soubory hlaviček pro knihovnu DLL, mohou tyto funkce používat uživatelé jazyka C a C++ beze změny.
Následující kód ukazuje hlavičkový soubor, který můžou používat klientské aplikace jazyka C i 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
Někdy může být potřeba propojit funkce jazyka C se spustitelným souborem C++, ale soubory hlaviček deklarací funkce nepoužívaly výše uvedenou techniku. Funkce můžete stále volat z jazyka C++. Ve zdrojovém souboru C++ zabalte #include
direktivu, aby kompilátor nemohl dekódovat názvy funkcí jazyka C:
extern "C" {
#include "MyCHeader.h"
}