Partager via


Exporter des fonctions C à utiliser dans des exécutables de langage C ou C++

Si vous avez des fonctions dans une DLL écrite en C, vous pouvez utiliser une macro de préprocesseur pour faciliter l’accès à partir du langage C et du code de langage C++. La __cplusplus macro de préprocesseur indique le langage en cours de compilation. Vous pouvez l’utiliser pour déclarer les fonctions avec liaison C lorsqu’elles sont appelées à partir du code de langage C++. Si vous utilisez cette technique et fournissez des fichiers d’en-tête pour votre DLL, ces fonctions peuvent être utilisées par les utilisateurs C et C++ sans modification.

Le code suivant montre un fichier d’en-tête que les applications clientes C et C++ peuvent utiliser :

// 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

Parfois, vous devrez peut-être lier des fonctions C à votre exécutable C++, mais les fichiers d’en-tête de déclaration de fonction n’ont pas utilisé la technique ci-dessus. Vous pouvez toujours appeler les fonctions à partir de C++. Dans le fichier source C++, encapsulez la #include directive pour empêcher le compilateur de décorer les noms de fonctions C :

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

Que voulez-vous faire ?

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Exportation à partir d’une DLL