305 votes

Fichiers DLL et LIB - quoi et pourquoi?

Je connais très peu de choses sur les DLL et les lib, à part le fait qu'ils contiennent le code vital nécessaire au bon fonctionnement d'un programme, à savoir des bibliothèques. Mais pourquoi les compilateurs les génèrent-ils? Ne serait-il pas plus simple d'inclure tout le code dans un seul exécutable? Et quelle est la différence entre DLL et LIB?

405voto

Charles E. Grant Points 1944

Il y a des bibliothèques statiques (LIB) et des bibliothèques dynamiques (DLL).

Les bibliothèques sont utilisées, car vous pourriez avoir de code que vous souhaitez utiliser dans de nombreux programmes. Par exemple, si vous écrivez une fonction qui compte le nombre de caractères dans une chaîne, cette fonction sera utile dans bon nombre de programmes. Une fois que vous obtenez cette fonction fonctionne correctement, vous ne voulez pas avoir à recompiler le code à chaque fois que vous l'utilisez, si vous mettez le code de l'exécutable pour que la fonction dans une bibliothèque, et l'éditeur de liens est possible d'extraire et d'insérer le code compilé dans votre programme. Les bibliothèques statiques sont parfois appelés "archives" pour cette raison.

Bibliothèques dynamiques de franchir une étape supplémentaire. Il semble un gaspillage de disposer de plusieurs copies de la bibliothèque de fonctions prenant de la place dans chacun des programmes. Pourquoi ne peuvent-ils pas tous une copie de la fonction? C'est ce que sont les librairies dynamiques. Plutôt que de construire le code de la bibliothèque dans votre programme lors de la compilation, il peut être mappé dans votre programme tel qu'il est chargé dans la mémoire pour s'exécuter. Plusieurs programmes qui s'exécutent en même temps que l'utilisation des mêmes fonctions de partage d'une copie, d'économiser la mémoire. En fait, vous pouvez charger les bibliothèques dynamiques uniquement en cas de besoin, en fonction du chemin d'accès par le biais de votre code. Aucun point en ayant l'imprimante routines de prendre de la mémoire si vous ne faites pas l'impression. D'autre part, cela signifie que vous devez disposer d'une copie de la bibliothèque dynamique installée sur chaque ordinateur de votre programme s'exécute. Cela crée son propre ensemble de problèmes.

Comme un exemple, presque tous les programmes écrits en " C "aura besoin de fonctions à partir d'une bibliothèque appelée la" bibliothèque runtime C, toutefois, peu de programmes auront besoin de toutes les fonctions. Le runtime C vient à la fois statique et dynamique des versions, de sorte que vous pouvez déterminer la version de votre programme utilise selon les besoins.

45voto

mox Points 3076

Un autre aspect est la sécurité (obscurcissement). Une fois qu'un morceau de code est extrait de l'application principale et inséré dans une bibliothèque de liens dynamiques "séparée", il est plus facile d'attaquer, d'analyser (effectuer un reverse engineering) le code, car il a été isolé. Lorsque le même morceau de code est conservé dans une bibliothèque LIB, il fait partie de l'application cible compilée (liée), ce qui rend donc plus difficile d'isoler (différencier) ce morceau de code du reste des fichiers binaires cibles.

21voto

Andy White Points 36586

Une raison importante pour la création d'une DLL/LIB plutôt que de simplement compiler le code dans un fichier exécutable est de réutilisation et de réinstallation. La moyenne Java ou .NET application (par exemple) seront les plus susceptibles d'utiliser plusieurs 3ème partie (ou cadre) des bibliothèques. Il est beaucoup plus facile et plus rapide de simplement compiler à l'encontre d'un pré-construit de la bibliothèque, plutôt que d'avoir à compiler l'ensemble de la 3ème partie de code dans votre application. La compilation de votre code dans les bibliothèques encourage également les bonnes pratiques de conception, par exemple, la conception de vos classes pour être utilisé dans différents types d'applications.

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