dllexport, dllimport

Section spécifique à Microsoft

Les attributs de classe de stockage dllexport et dllimport sont des extensions propres à Microsoft pour les langages C et C++. Vous pouvez les utiliser pour exporter et importer des fonctions, des données et des objets vers ou depuis une DLL.

Syntaxe

__declspec( dllimport ) declarator
__declspec( dllexport ) declarator

Notes

Ces attributs définissent explicitement l'interface de la DLL à son client, qui peut être un fichier exécutable ou une autre DLL. La déclaration de fonctions comme dllexport élimine le besoin d’avoir un fichier de définition de module (.def), au moins en ce qui concerne la spécification des fonctions exportées. L’attribut dllexport remplace le mot clé __export.

Si une classe est marquée __declspec(dllexport), les spécialisations des modèles de classe dans la hiérarchie de classes sont implicitement marquées comme __declspec(dllexport). Cela signifie que les modèles de classe sont instanciés explicitement et que les membres de la classe doivent être définis.

L’attribut dllexport d’une fonction expose la fonction avec son nom décoré (opération appelée « décoration de nom »). Pour les fonctions C++, le nom décoré inclut des caractères supplémentaires qui encodent les informations de type et de paramètre. Les fonctions C ou les fonctions déclarées comme extern "C" suivent les règles de décoration de nom du langage C. Pour plus d’informations sur la décoration de nom dans le code C/C++, consultez Noms décorés.

Pour exporter un nom non décoré, vous pouvez établir un lien à l’aide d’un fichier de définition de module (.def) qui définit le nom non décoré dans une section EXPORTS. Pour plus d’informations, consultez EXPORTS. Une autre façon d’exporter un nom non décoré consiste à utiliser une directive #pragma comment(linker, "/export:alias=decorated_name") dans le code source.

Quand vous déclarez dllexport ou dllimport, vous devez utiliser la syntaxe d’attribut étendu et le mot clé __declspec.

Exemple

// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();

Pour rendre votre code plus lisible, vous pouvez aussi utiliser des définitions de macros :

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;

Pour plus d’informations, consultez l’article suivant :

FIN de la section spécifique à Microsoft

Voir aussi

__declspec
Mots clés