92 votes

Qu'est-ce qu'une dll ?

Il s'agit peut-être d'une question de débutant, mais dans le monde actuel du développement d'applications Web, de nombreux programmeurs n'ont pas besoin d'utiliser les DLL et ne prennent donc pas la peine de se renseigner sur leur utilité.

Alors, qu'est-ce qu'un dll ?

  1. A quoi sert-il ?
  2. Comment cela fonctionne-t-il ?
  3. Comment en créer un ?
  4. Dans quelles situations est-il approprié d'en créer un ?

On m'a dit que les DLL sont utilisées pour stocker des bibliothèques de fonctions, mais à part cela, je ne sais pas grand-chose. J'espère que quelqu'un ici pourra m'éclairer et que je pourrai enfin cesser de me demander ce que font tous ces fichiers .dll dans mon répertoire Windows.

0 votes

Le wiki communautaire doit être utilisé dans les cas où il n'y a pas de réponse réelle à votre question. Il s'agit d'une question valide et en sélectionnant le mode wiki communautaire, vous vous empêchez, ainsi que les personnes qui y répondent, de gagner de la réputation dans cette question.

0 votes

Cette question a le potentiel de devenir une question très populaire

1 votes

Vous pensez ? Peut-être pour les vues mais probablement pas pour les votes... De toute façon, il a déjà été répondu 4 fois.

56voto

Brian Rasmussen Points 68853

Une DLL est une bibliothèque de liens dynamiques. Il s'agit d'une collection de code et/ou de données, qui peut être utilisée par plusieurs applications (ou d'autres bibliothèques/modules).

Ainsi, par exemple, des méthodes communes pour traiter des fichiers, travailler avec des composants d'interface graphique, etc. sont mises à disposition dans des bibliothèques afin que plusieurs applications puissent utiliser la même fonctionnalité. Cela permet non seulement de réduire la nécessité de construire plusieurs fois les mêmes éléments, mais aussi de s'assurer que, par exemple, les boîtes de dialogue communes sont les mêmes d'une application à l'autre.

Les bibliothèques peuvent être chargées au moment de l'exécution et donc partagées entre différentes applications concurrentes. C'est ce qu'on appelle la liaison dynamique.

Dans certains cas, la bibliothèque peut être incluse dans l'application elle-même. C'est ce qu'on appelle la liaison statique. La liaison statique facilite le déploiement, mais au détriment de la flexibilité, car les différentes applications chargeront toutes la même copie de la DLL.

Cependant, la liaison statique n'est pas toujours une option. Par exemple, vous ne pouvez pas lier statiquement une application .NET. L'utilisateur doit disposer des bibliothèques .NET pour pouvoir exécuter une application .NET et les bibliothèques (ou assemblages, comme on les appelle en .NET) sont chargées au moment de l'exécution.

Les DLL sont créées par les mêmes outils que ceux utilisés pour créer des applications. Les détails spécifiques dépendent beaucoup des outils utilisés.

0 votes

Merci pour la réponse, une chose que je me demande est comment les applications savent quelles fonctions sont disponibles dans la dll ? La DLL elle-même est un code machine, n'est-ce pas ? Alors comment les signatures des fonctions publiques de la DLL sont-elles exposées ?

0 votes

Je ne sais pas ce qu'il en est pour la plupart des langues, mais la fonction Auto Complete de Visual Studio vous montrera toutes les fonctions disponibles.

1 votes

Mais comment la complétion automatique peut-elle trouver les fonctions disponibles si la dll n'est qu'un code machine ?

30voto

Paul Alexander Points 17611

DLL = Dynamic Link Library

Le nom est en fait assez descriptif de ce qu'ils accomplissent.

Bibliothèque

Vous permet d'isoler le code d'un domaine de problème spécifique dans un seul emplacement. Vous pouvez ensuite le partager entre plusieurs applications. La bibliothèque peut être remplacée par une autre à tout moment pour corriger des bogues ou ajouter des fonctionnalités.

Enlace

Vous pouvez "lier" la bibliothèque à une application afin que la logique de la bibliothèque ne soit pas compilée directement dans l'application.

Dynamique

La bibliothèque peut être chargée à la demande. Au lieu de charger un EXE unique et gigantesque dans la mémoire, le système d'exploitation peut charger uniquement les parties nécessaires. De plus, si une DLL est partagée entre plusieurs applications, le système d'exploitation peut optimiser la façon dont la bibliothèque est chargée et la partager entre les applications.

10voto

judy smith Points 76

DLL (bibliothèque de liens dynamiques) peuvent être décrits comme de petits "sous-programmes" destinés à aider un programme plus important à bien fonctionner. Ils permettent de lier diverses ressources matérielles et logicielles (à divers moments de ses sessions d'exécution) au programme exécutable principal sur lequel ils sont basés, en fonction des besoins. Ainsi, il n'est pas nécessaire de charger tout ce qui a trait au programme exécutable principal dans la mémoire vive (RAM) de l'ordinateur lors de la première exécution du programme.

Les ressources logicielles transportées par les DLL comprennent le code des diverses fonctions du programme qui ne sont pas vraiment nécessaires à son fonctionnement, c'est-à-dire des fonctions qui ne doivent être appelées qu'à certains moments d'une session informatique donnée et qui peuvent même ne pas avoir besoin d'être appelées du tout. Charger ces fonctions (et il peut y en avoir un nombre considérable pour un programme donné) dans la mémoire vive de l'ordinateur lors de la première exécution du programme et les y maintenir tout au long de la session serait un gaspillage d'espace de mémoire vive - qui est considéré comme précieux.

Une avancée majeure :

Le développement des DLL a constitué une avancée majeure dans le domaine de l'informatique, car avant qu'elles ne soient disponibles, tout ce qui avait trait à un programme (y compris les fonctions rarement, voire jamais, utilisées) devait être chargé dans la mémoire vive lors du premier chargement du programme. Cela conduisait à un calcul extrêmement inefficace, avec des vitesses plus lentes pour les différents programmes. Il était également très difficile de faire du multitâche en exécutant ne serait-ce que deux programmes simples, en raison de la pression exercée sur la RAM.

Considérations :

Les DLL sont généralement spécifiques à une version. Celles qui fonctionnent bien pour, disons, la version 1 d'un programme (ou d'un langage de programmation, selon le cas) peuvent ne pas fonctionner avec la version 2. En règle générale, les DLL de la version la plus ancienne ont tendance à ne pas pouvoir fonctionner correctement avec la version la plus récente, mais celles de la version la plus récente peuvent généralement fonctionner assez bien avec l'ancienne version du programme ou du langage de programmation.

7voto

Grant Points 5366

Bibliothèque liée dynamiquement.

Pour vous donner un exemple, si vous avez la DLL de quelqu'un d'autre chargée dans votre application, vous pouvez utiliser des morceaux de programmation de celle-ci.

Vous pouvez charger une DLL qui génère des nombres aléatoires qui commencent toujours par "5" ou quelque chose comme ça.

Dans votre programme, vous pouvez appeler CrazyDLL.GenerateRandomNumbersSorta() et il retournera le nombre.

Pour un exemple concret, j'ai une DLL qui combine 4 zones de texte (que vous utiliseriez pour saisir des adresses IP) et qui n'accepte automatiquement que les nombres inférieurs à 256, et qui gère la pression de la touche d'effacement pour passer à une zone de texte précédente.

J'ai créé une DLL avec ce code, et maintenant tout ce que j'ai à faire est de glisser et déposer plus de collections de boîtes de texte d'adresses IP sans avoir à dupliquer tout ce code encore et encore.

La même DLL possède également une fonction permettant de convertir les adresses IP en chaînes hexadécimales, ainsi que d'autres codes utiles.

1voto

Cody Brocious Points 24042

La page Wikipedia sur les DLLs a à peu près toutes les informations que vous voulez.

La bibliothèque de liaison dynamique (également écrite sans le trait d'union), ou DLL, est l'implémentation par Microsoft du concept de bibliothèque partagée dans les systèmes d'exploitation systèmes d'exploitation Microsoft Windows et OS/2. Ces bibliothèques ont généralement généralement l'extension de fichier DLL, OCX (pour les bibliothèques contenant des contrôles ) ou DRV (pour les pilotes d'anciens systèmes). Les formats de fichier pour les DLL sont les mêmes que pour les fichiers EXE de Windows, c'est-à-dire Portable Executab. Portable Executable (PE) pour Windows 32 et 64 bits, et New Executable (NE) pour Windows 16 bits. pour Windows 16 bits. Comme les EXE, les DLL peuvent contenir du code, des données et des ressources, dans n'importe quelle combinaison. ressources, dans n'importe quelle combinaison. Au sens large du terme, tout de données ayant le même format de fichier peut être appelé une DLL de ressources.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X