2010-01-29 3 views
4

Je suis très confus avec cette terminologie. Je n'aime absolument pas le mot export dans le contexte de dll. La raison est seulement parce que je ne comprends pas ce que c'est. Je ne sais pas où chercher non plus.Que signifie `dll export/importing`?

Il est utilisé dans de nombreuses occasions.

  • Exportation d'une table d'exportation DLL
  • à partir d'une bibliothèque partagée
  • fonctions exportées par dll.

Peut-on s'il vous plaît expliquer. Ce que cela veut dire? Dans d'autres contextes, comment sa signification change-t-elle? Qu'est-ce qu'une table d'exportation? Est-ce comme .text/.bss/.data section (s) dans le fichier PE/ELF?

Pourquoi n'ai-je jamais entendu parler de dll importer? Si une telle chose existe. Quand est-il utilisé. Si ce n'est pas trop, un exemple simple serait également génial.

S'il vous plaît et je préciser prie de bien vouloir tout le monde à utiliser une terminologie simple. Je suis déjà confus.

+0

En fait, C# P/Invoke utilise un '[DllImport]' attribut pour marquer les signatures de fonction comme étant importées à partir d'une DLL donnée. –

Répondre

4

Une fonction est exportée depuis une DLL lorsqu'elle est exposée à d'autres programmes à utiliser. La table d'exportation d'une DLL est la liste des fonctions qui sont exposées et les adresses auxquelles elles sont disponibles. En règle générale, une DLL contient certaines fonctions qui sont exportées pour la consommation publique, et d'autres fonctions qui ne sont pas exportées - elles ne peuvent pas être appelées par d'autres DLL ou programmes utilisant des méthodes normales, mais elles peuvent être appelées en interne.

On ne parle pas souvent de « l'importation dll » parce que l'importation dll est pas un seul processus. Lorsque vous créez un lien vers une DLL, toutes les fonctions exportées par cette DLL sont mises à la disposition de votre DLL, mais vous devez généralement utiliser un fichier .h qui vous fournit les déclarations et un fichier .lib qui fournit le talon. pointeurs pour les fonctions exportées. Ces deux choses constituent ensemble le dll importer. Cependant, il est possible d'utiliser les fonctions de dll sans l'une de ces choses en utilisant les fonctions LoadLibrary et GetProcAddress (équivalent Posix dlopen et dlsym).

+0

'La table d'export d'une DLL est la liste des fonctions qui sont exposées et les adresses auxquelles elles sont disponibles. 'N'est-ce pas appelé' table de symboles '? – monster

+0

La table d'exportation est un sous-ensemble de la table de symboles. Une table de symboles complète, telle que celle utilisée pour le débogage, inclura des fonctions internes, des noms de variables et d'autres éléments qui ne sont pas exportés. –

+0

Et la table d'exportation est une fonctionnalité spécifique prise en charge par le système d'exploitation d'une image binaire qui permet la liaison à l'exécution. C'est donc un type de table de symboles très spécifique. –