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

__declspec
Parole chiave