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 ?
Exporter à partir d’une DLL à l’aide de
__declspec(dllexport)
Importer dans une application à l’aide de
__declspec(dllimport)
Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour