Définitions et déclarations (C++)
Section spécifique à Microsoft
L’interface DLL fait référence à tous les éléments (fonctions et données) qui sont connus pour être exportés par un programme du système, c’est-à-dire tous les éléments déclarés comme dllimport
ou dllexport
. Toutes les déclarations incluses dans l’interface DLL doivent spécifier l’attribut dllimport
ou dllexport
. Toutefois, la définition doit spécifier uniquement l’attribut dllexport
. Par exemple, la définition de fonction suivante génère une erreur de compilation :
__declspec( dllimport ) int func() { // Error; dllimport
// prohibited on definition.
return 1;
}
Le code suivant génère aussi une erreur :
__declspec( dllimport ) int i = 10; // Error; this is a definition.
Mais voici la syntaxe correcte :
__declspec( dllexport ) int i = 10; // Okay--export definition
L’utilisation de dllexport
implique une définition tandis que dllimport
implique une déclaration. Vous devez utiliser le mot clé extern
avec dllexport
pour forcer une déclaration. Sinon, une définition est impliquée. Les exemples suivants sont donc corrects :
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
extern DllExport int k; // These are both correct and imply a
DllImport int j; // declaration.
Les exemples suivants clarifient l'exemple précédent :
static __declspec( dllimport ) int l; // Error; not declared extern.
void func() {
static __declspec( dllimport ) int s; // Error; not declared
// extern.
__declspec( dllimport ) int m; // Okay; this is a
// declaration.
__declspec( dllexport ) int n; // Error; implies external
// definition in local scope.
extern __declspec( dllimport ) int i; // Okay; this is a
// declaration.
extern __declspec( dllexport ) int k; // Okay; extern implies
// declaration.
__declspec( dllexport ) int x = 5; // Error; implies external
// definition in local scope.
}
FIN de la section spécifique à Microsoft
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