dllexport
, dllimport
Sezione specifica Microsoft
Gli dllexport
attributi della classe di archiviazione e dllimport
sono estensioni specifiche di Microsoft per i linguaggi C e C++. È possibile usarli per esportare e importare funzioni, dati e oggetti verso o da una DLL.
Sintassi
__declspec( dllimport )
declarator
__declspec( dllexport )
declarator
Osservazioni:
Questi attributi definiscono in modo esplicito l'interfaccia della DLL per il client che può essere il file eseguibile o un'altra DLL. La dichiarazione di funzioni come dllexport
elimina la necessità di un file di definizione del modulo (.def
), almeno in relazione alla specifica delle funzioni esportate. L'attributo dllexport
sostituisce la __export
parola chiave .
Se una classe è contrassegnata come __declspec(dllexport)
, qualsiasi specializzazione dei modelli di classe nella gerarchia di classi viene contrassegnata in modo implicito come __declspec(dllexport)
. Ciò significa che i modelli di classe vengono create in modo esplicito e i membri della classe devono essere definiti.
dllexport
di una funzione espone la funzione con il nome decorato, talvolta noto come "mangling name". Per le funzioni C++, il nome decorato include caratteri aggiuntivi che codificano le informazioni sul tipo e sui parametri. Funzioni o funzioni C dichiarate come extern "C"
segue le regole di decorazione del nome C. Per altre informazioni sulla decorazione dei nomi nel codice C/C++, vedere Nomi decorati.
Per esportare un nome non dichiarato, è possibile collegarsi usando un file di definizione del modulo (.def
) che definisce il nome non dichiarato in una EXPORTS
sezione. Per ulteriori informazioni, vedere EXPORTS
. Un altro modo per esportare un nome non dichiarato consiste nell'usare una #pragma comment(linker, "/export:alias=decorated_name")
direttiva nel codice sorgente.
Quando si dichiara dllexport
o dllimport
, è necessario usare la sintassi degli attributi estesi e la __declspec
parola chiave .
Esempio
// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();
In alternativa, per rendere il codice più leggibile, è possibile utilizzare le definizioni di macro:
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
Per altre informazioni, vedi:
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