Quels sont exactement DLL fichiers, et comment fonctionnent-ils?
Comment exactement les fichiers DLL de travail? Il semble y avoir énormément, mais je ne sais pas ce qu'ils font ou comment ils fonctionnent.
Alors, quel est le problème avec eux?
- Car ce n'est taggés avec Windows, et cette question a été écrit en 2008, il est intéressant de mentionner que, de nos jours dll fonctionne sur Mac et Linux avec .NET de Base.
Vous devez vous connecter pour publier un commentaire.
Ce qui est une DLL?
Bibliothèques de liens dynamiques (DLL)s sont comme Exe, mais ils ne sont pas directement exécutable. Ils sont similaires à .donc les fichiers dans Linux/Unix. C'est-à-dire, les Dll sont MME de la mise en œuvre de bibliothèques partagées.
Dll sont tellement comme un EXE que le format de fichier est le même. Les deux EXE et les Dll sont basés sur le fichier Exécutable Portable (PE) format de fichier. Dll peuvent également contenir des composants COM et .Bibliothèques NET.
Ce n'est une DLL contiennent?
Une DLL contient des fonctions, des classes, des variables, des interfaces utilisateur et des ressources (telles que des icônes, des images, des fichiers, ...) qu'un EXE ou autres DLL utilise.
Types de bibliothèques:
Sur pratiquement tous les systèmes d'exploitation, il y a 2 types de bibliothèques. Les bibliothèques statiques et dynamiques des bibliothèques. Dans windows, les extensions de fichier sont comme suit: les bibliothèques Statiques (.lib) et des bibliothèques dynamiques (.dll). La principale différence est que les bibliothèques statiques sont liés à l'exécutable au moment de la compilation; considérant que les bibliothèques de liens dynamiques sont pas lié jusqu'au moment de l'exécution.
Plus sur la statique et la dynamique des bibliothèques:
Vous n'avez pas l'habitude de voir les bibliothèques statiques si sur votre ordinateur, parce que d'une bibliothèque statique est directement intégré à l'intérieur d'un module (EXE ou DLL). Une bibliothèque dynamique est un fichier autonome.
Un fichier DLL peuvent être modifiées à tout moment et n'est chargé que lors de l'exécution, lorsqu'un fichier EXE explicitement charge la DLL. Une bibliothèque statique ne peut pas être changé une fois qu'il est compilé dans le fichier EXE.
Un fichier DLL peuvent être mis à jour sur une base individuelle sans la mise à jour de l'exécutable lui-même.
Chargement d'une DLL:
Un programme charge une DLL au démarrage, via l'API Win32 LoadLibrary, ou lorsqu'il s'agit d'une dépendance d'une autre DLL. Un programme utilise le GetProcAddress pour charger une fonction ou LoadResource pour charger une ressource.
Pour en savoir plus:
Veuillez vérifier MSDN ou Wikipédia pour plus de lecture. Aussi les sources de cette réponse.
Ce qui est une DLL?
Fichiers DLL sont des fichiers binaires qui peuvent contenir du code exécutable et les ressources comme des images, etc. Contrairement aux applications, on ne peut pas être exécuté directement, mais une application charge comme et quand ils sont nécessaires (ou tous à la fois pendant le démarrage).
Sont-ils importants?
La plupart des applications de chargement de la DLL fichiers dont ils ont besoin au démarrage. Si l'un de ces ne sont pas constaté que le système ne sera pas en mesure de démarrer le processus à tous.
Fichiers DLL peut nécessiter d'autres fichiers DLL
De la même manière qu'une application a besoin d'un fichier DLL, un fichier DLL peuvent être dépendants d'autres fichiers DLL de lui-même. Si l'un de ces fichiers DLL dans la chaîne de dépendance n'est pas trouvé, l'application ne se charge pas. C'est débogué facilement à l'aide de tout dependency walker outils, comme Dependency Walker.
Il ya tellement beaucoup d'entre eux dans les dossiers système
Plus de la fonctionnalité du système est exposé à un programme utilisateur dans le formulaire de fichiers DLL comme ils sont une forme standard de partage de code /ressources. Chaque fonctionnalité est conservée séparément dans différents fichiers DLL sorte que seules les fichiers DLL sera chargé et donc de réduire les contraintes de mémoire sur le système.
Applications installées également utiliser des fichiers DLL
Fichiers DLL devient aussi une forme de séparation des fonctionnalités physiquement comme expliqué ci-dessus. De bonnes applications aussi essayer de ne pas charger les fichiers DLL jusqu'à ce qu'ils soient absolument nécessaires, ce qui réduit les besoins en mémoire. Ce trop provoque des applications livré avec un lot de fichiers DLL.
L'Enfer des DLL
Cependant, à la fois des mises à jour du système se casse souvent d'autres programmes quand il y a une incompatibilité de version entre la DLL partagée fichiers et le programme qui les exige. Système de points de contrôle et le DLL cache, etc. ont été les initiatives de M$ afin de résoudre ce problème. L' .NET plate-forme ne pourrait pas faire face à ce problème.
Comment savons-nous ce qui est à l'intérieur d'un fichier DLL?
Vous devez utiliser un outil externe comme DUMPBIN ou de Dépendance Walker, ce qui ne sera pas seulement montrer ce que visible publiquement fonctions (connu sous le nom des exportations) sont contenues à l'intérieur de la DLL fichiers, et aussi ce que les autres DLL fichiers dont il a besoin et dont les exportations à partir de ces fichiers DLL ce fichier DLL est dépendant.
Comment créer /utiliser?
Reportez-vous à la documentation de programmation de votre fournisseur. Pour C++, reportez-vous à LoadLibrary dans MSDN.
"The .NET platform might not face this issue at all."
) avec un pourquoi. Merci.Disons que vous faites un fichier exécutable qui utilise quelques fonctions dans une bibliothèque.
Si la bibliothèque que vous utilisez est statique, l'éditeur de liens copiez le code objet de ces fonctions directement à partir de la bibliothèque et de les insérer dans le fichier exécutable.
Maintenant, si cet exécutable est lancé, il a tout ce dont il a besoin, donc l'exécutable loader charge en mémoire et exécute.
Si la bibliothèque est dynamique l'éditeur de liens ne sera pas insérer de code objet, mais plutôt qu'il va insérer un tampon qui dit en substance cette fonction se trouve dans cette DLL à cet endroit.
Maintenant, si ce fichier exécutable est exécuté, le nombre de bits de l'exécutable sont manquants (j'.e les bouchons) de sorte que le chargeur passe par le fichier exécutable de réparer l'manquant talons. Seulement après que tous les bouchons ont été résolus sera l'exécutable être autorisé à s'exécuter.
Pour le voir en action, de supprimer ou de renommer la DLL et de regarder comment le chargeur rapport d'une DLL manquante erreur lorsque vous essayez d'exécuter le fichier exécutable.
D'où le nom de Bibliothèque de liens Dynamiques, les parties du processus de liaison est fait dynamiquement au moment de l'exécution par l'exécutable chargeur.
Une note finale, si vous n'avez pas un lien pour la DLL alors pas de talons sera inséré par l'éditeur de liens, mais Windows reste le GetProcAddress API qui permet de charger et d'exécution de la fonction de DLL point d'entrée de temps après l'exécutable a commencé.
Dll (dynamic link libraries) et SLs (bibliothèques partagées, soit l'équivalent sous UNIX) sont seulement des bibliothèques de code exécutable qui peut être liée de manière dynamique dans un fichier exécutable au moment du chargement.
Bibliothèques statiques sont insérées dans un fichier exécutable au moment de la compilation et sont fixés à partir de ce point. Ils augmentent la taille de l'exécutable et ne peut pas être partagée.
Les bibliothèques dynamiques ont les avantages suivants:
1/Ils sont chargés au moment de l'exécution plutôt que de moment de la compilation, de sorte qu'ils peuvent être mis à jour indépendamment de l'exécutable (tous ceux de fantaisie fenêtres et boîtes de dialogue de Windows viennent de Dll sorte que le look and feel de votre application peut changer sans avoir à le réécrire).
2/Parce qu'ils sont indépendants, le code peut être partagée entre plusieurs exécutables - ce qui économise de la mémoire car, si vous êtes en cours d'exécution 100 applications avec une seule DLL, il peut y avoir seulement une copie de la DLL en mémoire.
Leur principal inconvénient est l'avantage #1 - le fait d'avoir des Dll changement indépendant de votre application peut causer votre demande d'arrêter de travailler ou de commencer à se comporter d'une manière bizarre. DLL gestion des versions ont tendance à ne pas être géré très bien sous Windows et cela conduit à la bizarrement nommé "l'Enfer des DLL".
Fichiers DLL contiennent un Table d'Exportation qui est une liste de symboles qui peut être regardé par le programme appelant. Les symboles sont généralement des fonctions avec le Convention d'appel C (__stcall). La table d'exportation contient également l'adresse de la fonction.
Avec cette information, le programme appelant peut ensuite appeler les fonctions au sein de la DLL, même si elle n'a pas accès à la DLL au moment de la compilation.
L'Introduction De Bibliothèques De Liens Dynamiques a plus d'information.
http://support.microsoft.com/kb/815065
http://en.wikipedia.org/wiki/Dynamic-link_library
DLL est une Extension de Fichier & Connu Comme “dynamic link library” format de fichier utilisé pour la tenue de multiples codes et des procédures pour les programmes de Windows. Logiciels & Jeux fonctionne sur les bases de la DLL Fichiers; les fichiers DLL a été créé de sorte que plusieurs applications peuvent utiliser leurs informations en même temps.
SI vous souhaitez obtenir plus d'informations sur les Fichiers DLL ou face à toute erreur de lire le post suivant.
https://www.bouncegeek.com/fix-dll-errors-windows-586985/
Dll (Dynamic Link Libraries) contiennent des ressources utilisées par une ou plusieurs applications ou services. Ils peuvent contenir des classes, des icônes, des cordes, des objets, des interfaces, et à peu près tout ce qu'un développeur aurait besoin de stocker à l'exception d'une INTERFACE utilisateur.