Esportazione di funzioni C per l'utilizzo in eseguibili in linguaggio C o C++

Se in una DLL scritta in C sono presenti funzioni a cui si desidera accedere da un modulo in linguaggio C o C++, è necessario utilizzare la macro del preprocessore __cplusplus per determinare il linguaggio di compilazione e quindi dichiarare queste funzioni con il collegamento C se devono essere utilizzate da un modulo in linguaggio C++. Se si utilizza questa tecnica e si forniscono i file di intestazione per la DLL, queste funzioni possono essere utilizzate dagli utenti di C e C++ senza modifiche.

Nell'esempio di codice riportato di seguito viene illustrato un file di intestazione che può essere utilizzato da 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

Se è necessario collegare le funzioni C all'eseguibile C++ e non è stata utilizzata la tecnica precedente per i file di intestazione della dichiarazione di funzione, nel file sorgente C++ procedere come descritto di seguito per evitare che il compilatore effettui la decorazione dei nomi delle funzioni C:

extern "C" {
#include "MyCHeader.h"
}

Scegliere l'argomento con cui si desidera procedere

Scegliere l'argomento su cui visualizzare maggiori informazioni

Vedere anche

Concetti

Esportazione da una DLL