2011-09-02 6 views
0

Dans le fichier export.def peut mettre ces lignes:fonction Exportation de DLL syntaxe

LIBRARY plug 
EXPORTS 
    funcName 
    main=funcName 

Quel est l'effet de la fonction d'exportation de telle manière? Est-ce qu'il exporte deux noms de fonction, qui appartiennent à la même fonction? Ou exporte-t-il simplement la fonction, en lui donnant un autre nom?

+1

Je ne réalisais pas les fichiers def étaient encore utilisés. Je pensais qu'ils étaient fortement dépréciés et leur utilisation très découragée. –

+2

Pourriez-vous s'il vous plaît poster un lien qui dit pourquoi il est déprécié? Impossible de trouver quelque chose lié à google. – Vadim

+0

Les fichiers de définition de module ne sont pas obsolètes. Ils sont facultatifs, puisque la plupart des choses que vous faites avec eux peuvent être faites avec __declspec (dllexport) et les commutateurs de liens. Mais vous pouvez faire un alias d'exportation sans un dllexport (ce qui est à propos de cette question), ni spécifier un ordinal (parfois nécessaire pour la compatibilité binaire). Le fichier .def met tout ce que vous devez savoir sur une configuration de DLL en un seul endroit (utile pour le contrôle de la source). Sinon, vous devez explorer les fichiers de projet ou makefiles (pour les options de l'éditeur de liens) et les fichiers source (pour dllexports). –

Répondre

2

Selon MSDN:

Le mot-clé EXPORTS peut être sur la même ligne que la première définition ou sur une ligne précédente. Le fichier .def peut contenir une ou plusieurs instructions EXPORTS .

La syntaxe des définitions d'exportation est:

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA] 

NomEntrée est la fonction ou le nom de variable que vous souhaitez exporter. Ceci est requis. Si le nom que vous exportez est différent du nom dans la DLL , spécifiez le nom de l'exportation dans la DLL avec internalname. Pour exemple, si votre DLL exporte une fonction, func1() et que vous voulez qu'il soit utilisé comme func2(), vous devez spécifier:

EXPORTS func2=func1