/EXPORT (Exporter une fonction)

Exporte une fonction par nom ou ordinal, ou données, à partir de votre programme.

Syntaxe

/EXPORT :entryname[,@ordinal[,NONAME][,DATA]

Notes

L’option /EXPORT spécifie une fonction ou un élément de données à exporter à partir de votre programme afin que d’autres programmes puissent appeler la fonction ou utiliser les données. Les exportations sont généralement définies dans une DLL.

Le nom d’entrée est le nom de la fonction ou de l’élément de données tel qu’il doit être utilisé par le programme appelant. ordinal spécifie un index dans la table d’exportations de la plage 1 à 65 535 ; si vous ne spécifiez pas d’ordinal, LINK en affecte un. NONAME mot clé exporte la fonction uniquement en tant qu’ordinal, sans nom d’entrée.

Data mot clé spécifie que l’élément exporté est un élément de données. L’élément de données du programme client doit être déclaré à l’aide d’extern __declspec(dllimport).

Il existe quatre méthodes d’exportation d’une définition, répertoriées dans l’ordre d’utilisation recommandé :

  1. __declspec(dllexport) dans le code source

  2. Instruction EXPORTS dans un fichier .def

  3. Spécification /EXPORT dans une commande LINK

  4. Directive de commentaire dans le code source, du formulaire #pragma comment(linker, "/export: definition ").

Toutes ces méthodes peuvent être utilisées dans le même programme. Lorsque LINK génère un programme qui contient des exportations, il crée également une bibliothèque d’importation, sauf si un fichier .exp est utilisé dans la build.

LINK utilise des formes décorées d’identificateurs. Le compilateur décore un identificateur lorsqu’il crée le fichier .obj. Si entryname est spécifié à l’éditeur de liens dans son formulaire non décodé (tel qu’il apparaît dans le code source), LINK tente de correspondre au nom. S’il ne trouve pas de correspondance unique, LINK émet un message d’erreur. Utilisez l’outil DUMPBIN pour obtenir le formulaire de nom décoré d’un identificateur lorsque vous devez le spécifier à l’éditeur de liens.

Remarque

Ne spécifiez pas la forme décorée d’identificateurs C déclarés __cdecl ou __stdcall.

Si vous avez besoin d’exporter un nom de fonction non optimisé et que vous disposez d’exportations différentes en fonction de la configuration de build (par exemple, dans les builds 32 bits ou 64 bits), vous pouvez utiliser différents fichiers DEF pour chaque configuration. (Les directives conditionnelles de préprocesseur ne sont pas autorisées dans les fichiers DEF.) En guise d’alternative, vous pouvez utiliser une #pragma comment directive avant une déclaration de fonction comme indiqué ici, où PlainFuncName est le nom non décoré et _PlainFuncName@4 le nom décoré de la fonction :

#pragma comment(linker, "/export:PlainFuncName=_PlainFuncName@4")
BOOL CALLBACK PlainFuncName( Things * lpParams)

Pour définir cette option de l'éditeur de liens dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de Propriétés de configuration>Éditeur de liens>Ligne de commande.

  3. Entrez l’option dans la zone Options supplémentaires.

Pour définir cette option de l'éditeur de liens par programmation

Voir aussi

Informations de référence sur l’éditeur de liens MSVC
Options de l’éditeur de liens MSVC