Esportare le funzioni C da usare nei file eseguibili del linguaggio C o C++
Se si dispone di funzioni in una DLL scritta in C, è possibile usare una macro del preprocessore per semplificarne l'accesso dal linguaggio C e dal codice del linguaggio C++. La __cplusplus
macro del preprocessore indica il linguaggio da compilare. È possibile usarlo per dichiarare le funzioni con il collegamento C quando viene chiamato dal codice del linguaggio C++. Se si usa questa tecnica e si forniscono file di intestazione per la DLL, queste funzioni possono essere usate dagli utenti C e C++ senza alcuna modifica.
Il codice seguente mostra un file di intestazione che può essere usato dalle applicazioni client C e 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
In alcuni casi potrebbe essere necessario collegare le funzioni C al file eseguibile C++, ma i file di intestazione della dichiarazione di funzione non hanno usato la tecnica precedente. È comunque possibile chiamare le funzioni da C++. Nel file di origine C++ eseguire il wrapping della #include
direttiva per impedire al compilatore di decorare i nomi delle funzioni C:
extern "C" {
#include "MyCHeader.h"
}