Partager via


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

Mise à jour : novembre 2007

Si, dans une DLL écrite en C, vous avez des fonctions auxquelles vous souhaitez accéder à partir d'un module rédigé en langage C ou C++, vous devez utiliser la macro de préprocesseur __cplusplus pour déterminer le langage compilé, puis déclarer ces fonctions à l'aide d'une liaison C en cas d'utilisation à partir d'un module en C++. Si vous utilisez cette technique et fournissez des fichiers d'en-tête pour votre DLL, ces fonctions peuvent être utilisées par des utilisateurs C et C++ sans modification.

Le code suivant montre un fichier d'en-tête qui peut être utilisé par des applications clientes en C et 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

Si vous devez lier des fonctions C à votre exécutable C++ et que les fichiers d'en-tête de déclaration de fonctions n'ont pas utilisé la technique ci-dessus, accédez au fichier source en C++ puis procédez de la façon suivante pour empêcher le compilateur de décorer les noms de fonctions du C :

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

Que voulez-vous faire ?

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

Voir aussi

Concepts

Exportation à partir d'une DLL