Definizioni e dichiarazioni (C++)
Sezione specifica Microsoft
L'interfaccia DLL si riferisce a tutti gli elementi (funzioni e dati) che sono noti per essere esportati da alcuni programmi nel sistema; ovvero tutti gli elementi dichiarati come dllimport
o dllexport
. Tutte le dichiarazioni incluse nell'interfaccia DLL devono specificare l'attributo dllimport
o dllexport
. Tuttavia, la definizione deve specificare solo l'attributo dllexport
. Ad esempio, la definizione di funzione seguente genera un errore del compilatore:
__declspec( dllimport ) int func() { // Error; dllimport
// prohibited on definition.
return 1;
}
Anche questo codice genera un errore:
__declspec( dllimport ) int i = 10; // Error; this is a definition.
Tuttavia, questa è la sintassi corretta:
__declspec( dllexport ) int i = 10; // Okay--export definition
L'uso di dllexport
implica una definizione, mentre dllimport
implica una dichiarazione. È necessario utilizzare la parola chiave extern
con dllexport
per forzare una dichiarazione; in caso contrario, una definizione è implicita. Pertanto, i seguenti esempi sono corretti:
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
extern DllExport int k; // These are both correct and imply a
DllImport int j; // declaration.
I seguenti esempi chiariscono l'esempio precedente:
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.
}
Fine sezione specifica Microsoft
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per