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?
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?
Qu'est ce qu'une DLL?
Les 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.
Les 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.
Les 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.
Le 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 Wikipedia pour plus de lecture. Aussi les sources de cette réponse.
Qu'est ce qu'une DLL?
Les fichiers DLL sont des fichiers binaires qui peuvent contenir du code exécutable et les ressources comme des images, etc. À la différence des 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 il a 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.
Les 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 y a donc beaucoup d'entre eux dans les dossiers système
La plupart des fonctionnalités 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.
Les applications installées également utiliser des fichiers DLL
Les 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 en ont besoin. 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 publiquement visible 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.
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é.
Les fichiers DLL contiennent une 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 la 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
Une DLL est une bibliothèque qui contient le code et de données qui peuvent être utilisés par plus d' un programme en même temps. Pour exemple, dans les systèmes d'exploitation Windows, la DLL Comdlg32 assure commune boîte de dialogue des fonctions connexes. Par conséquent, chaque programme peut utiliser la fonctionnalités contenues dans cette DLL à mettre en œuvre une boîte de dialogue Ouvrir la boîte. Cela permet de favoriser la réutilisation du code et utilisation efficace de la mémoire.
En utilisant une DLL, un programme peut être modulaire des composants séparés. Par exemple, un programme de comptabilité peut être vendu par module. Chaque module peut être chargé dans le programme principal lors de l'exécution temps si le module est installé. Parce que les modules sont séparés, l' temps de chargement du programme est plus rapide, et un module est chargé uniquement lorsque la fonctionnalité est demandé.
En outre, les mises à jour sont plus faciles à appliquer à chaque module, sans affecter d'autres parties du programme. Pour exemple, vous pouvez avoir une paie programme, et de la modification des taux d'imposition de chaque année. Lorsque ces modifications sont isolées pour une DLL, vous pouvez appliquer une mise à jour sans avoir besoin de construire ou d'installer l'ensemble du programme de nouveau.
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.