web-dev-qa-db-fra.com

Qu'est-ce qu'une DLL?

Cela peut être une question très simple, mais dans le monde actuel du développement d'applications Web, de nombreux programmeurs n'ont pas besoin de beaucoup traiter les DLL, et ne prennent donc pas la peine d'en savoir plus sur leur objectif.

Qu'est-ce qu'une DLL?

  1. A quoi cela sert?
  2. Comment ça marche?
  3. Comment en créez-vous un?
  4. Dans quelles situations en créer un approprié?

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

84
Daniel

A DLL est une bibliothèque de liens dynamiques. C'est 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, les méthodes courantes de traitement des fichiers, de travail avec les composants de l'interface graphique, etc. sont mises à disposition dans les bibliothèques afin que plusieurs applications puissent utiliser la même fonctionnalité. Cela réduit non seulement la nécessité de créer plusieurs fois les mêmes éléments, mais cela garantit également que, par exemple, les dialogues communs sont les mêmes entre les applications.

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

Dans certains cas, la bibliothèque peut être incluse dans l'application elle-même. Ceci est connu sous le nom de liaison statique. La liaison statique facilite le déploiement au détriment de la flexibilité, car différentes applications chargeront chacune 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 exécuter une application .NET et les bibliothèques (ou assemblys tels qu'ils sont appelés dans .NET) sont chargées lors 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.

52
Brian Rasmussen

DLL = bibliothèque de liens dynamiques

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

Bibliothèque

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

Lien

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 seul EXE gigantesque dans la mémoire, le système d'exploitation ne peut charger que les portions nécessaires. De plus, si un DLL est partagé entre les applications, le système d'exploitation peut optimiser la façon dont la bibliothèque est chargée et la partager entre les applications.

26
Paul Alexander

DLL (bibliothèque de liens dynamiques) les fichiers peuvent être décrits comme de petits "sous-programmes" qui sont destinés à aider un plus gros programme à bien fonctionner. Ils fournissent un moyen de relier diverses ressources matérielles et logicielles (à divers moments de ses sessions d'exécution) au programme exécutable principal sur lequel elles sont basées, en fonction des besoins. Cela élimine le besoin de tout charger concernant le programme exécutable principal sur le RAM (mémoire vive) de l'ordinateur lors de la première exécution du programme.

Les ressources logicielles portées par les DLL incluent du code pour les différentes fonctions du programme qui ne sont pas vraiment nécessaires pour faire fonctionner le programme: c'est-à-dire des fonctions qui ne doivent être appelées qu'à certains moments au cours d'une session informatique donnée et qui pourraient même ne pas avoir besoin être appelé du tout. Charger ces fonctions (et il peut y en avoir un nombre considérable pour un programme donné) sur l'ordinateur RAM lorsque le programme est lancé pour la première fois, puis les y conserver tout au long de la session serait une perte de RAM espace - qui est considéré comme étant premium.

Une avancée majeure:

Le développement des DLL a été une avancée majeure dans le domaine de l'informatique, car avant d'être disponibles, tout ce qui concernait un programme (y compris les fonctions rarement ou jamais utilisées) devait être chargé sur le RAM lorsque le programme a été chargé en premier. Cela a conduit à un calcul extrêmement inefficace, avec des vitesses plus lentes présentées par divers programmes. Il était également extrêmement difficile d'effectuer plusieurs tâches en exécutant même quelques programmes simples, en raison de la pression qui en résulte sur la RAM.

Considérations:

Les DLL sont généralement spécifiques à la version. Ceux qui fonctionnent bien pour, par exemple, la version 1 d'un programme (ou un langage de programmation, comme cela peut être le cas) peuvent ne pas fonctionner correctement avec la version 2. La règle générale est que les DLL de l'ancienne version ont tendance à ne pas fonctionner bien avec la version plus récente, mais ceux de la version plus récente peuvent généralement très bien fonctionner avec l'ancienne version du programme ou du langage de programmation.

9
judy smith

Bibliothèque liée dynamiquement.

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

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

Dans votre programme, vous pouvez appeler CrazyDLL.GenerateRandomNumbersSorta () et il renverra le numéro.

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

J'ai créé un DLL avec ce code, et maintenant tout ce que j'ai à faire est de glisser-déposer davantage de ces collections de zones de texte d'adresse IP sans avoir à dupliquer tout ce code encore et encore.

Le même DLL a également une fonction pour convertir les adresses IP en chaînes hexadécimales et autres codes utiles.

6
Grant

De MSDN Library :

Une bibliothèque de liens dynamiques (DLL) est un module qui contient des fonctions et des données qui peuvent être utilisées par un autre module (application ou DLL).

1
Nemanja Trifunovic

DLL = Dynamique Charge Bibliothèque de liens. Comme on vous l'a dit, il s'agit essentiellement d'une collection de fonctions, de classes C++ et/ou de variables globales. Vous pouvez charger le DLL statiquement (c'est-à-dire que le système d'exploitation le charge automatiquement au démarrage de votre programme) ou dynamiquement (votre programme le charge explicitement), à quel point les fonctions et les éléments contenus dans le DLL sont disponibles pour votre programme.

En créer un est similaire à créer un EXE, sauf qu'il n'est pas nécessaire qu'il y ait une fonction main(). Il existe des directives de l'éditeur de liens pour indiquer à l'éditeur de liens de créer un DLL plutôt qu'un EXE.

La principale raison pour laquelle vous souhaitez le faire est d'encapsuler du code en un seul endroit et de l'utiliser à partir de plusieurs exes, plutôt que de lier le code à chacun.

Une raison quelque peu historique est que votre exe peut être plus petit car une partie du code se trouve physiquement dans un fichier différent. Cela signifie que la quantité d'espace occupée en mémoire par votre exe peut être plus petite. Sur les systèmes modernes, cela pose moins de problèmes qu'auparavant, bien que cela puisse toujours être un problème sur Windows Mobile.

1
Graeme Perrow