DLL contre LIB
Une bibliothèque est une collection de ressources qui peuvent être utilisées pour développer des applications. Une bibliothèque est généralement composée de sous-programmes, de fonctions, de classes, de valeurs et de types. Pendant le processus de liaison (généralement effectué par un éditeur de liens), les bibliothèques et les exécutables font référence les uns aux autres. Les fichiers de bibliothèque sont divisés en bibliothèques statiques et dynamiques en fonction du moment auquel les sous-programmes sont chargés dans l'application cible. En conséquence, les fichiers LIB sont des bibliothèques liées statiquement et les fichiers DLL sont des bibliothèques liées dynamiquement.
Qu'est-ce qu'une DLL ?
Dynamic Link Library (plus communément appelée DLL) est une implémentation de bibliothèque partagée développée par Microsoft. Il utilise les extensions.dll,.ocx ou.drv et ils sont utilisés dans les systèmes d'exploitation Microsoft Windows et OS/2..dll est utilisé par les fichiers DLL normaux. Et l'extension.ocx est utilisée par les bibliothèques qui contiennent des contrôles ActiveX et l'extension.drv est utilisée par les fichiers de pilote système hérités. Le format de fichier DLL est le même que celui des fichiers Windows EXE (fichiers exécutables portables sur Windows 32 bits/64 bits et nouvel exécutable sur Windows 16 bits). Par conséquent, toute combinaison de code, de données et de ressources peut être contenue dans des fichiers DLL (tout comme dans les fichiers EXE). En fait, les fichiers de données au format de fichier DLL sont appelés DLL de ressources. Les bibliothèques d'icônes (avec l'extension.icl) et les fichiers de polices (avec les extensions.fon et.fot) sont des exemples de ressources DLL.
Les composants appelés sections constituent une DLL et chaque section a ses propres attributs comme lecture seule/inscriptible et exécutable/non exécutable. Les sections de code sont exécutables, tandis que les sections de données ne sont pas exécutables. Les sections de code sont partagées et les sections de données sont privées. Cela signifie que tous les processus utilisant la DLL utiliseront la même copie du code, tandis que chaque processus aura sa propre copie des données. La principale bibliothèque dynamique pour Windows est kernel32.dll, qui contient les fonctions de base (fonctionnalités liées aux fichiers et à la mémoire) sous Windows. COM (Component Object Model) est l'extension de DLL à la POO (Programmation Orientée Objet). Les DLL conventionnelles sont plus faciles à utiliser que les fichiers COM.
Qu'est-ce que LIB ?
Les fichiers LIB sont des bibliothèques statiques (également appelées bibliothèques liées statiquement). Les fichiers LIB contiennent une collection de sous-programmes, de fonctions externes et de variables. Les fichiers LIB sont résolus au moment de la compilation (par opposition à l'exécution). Le code est en fait copié dans l'application cible. Un compilateur, un éditeur de liens ou un classeur effectuera cette résolution et produira un fichier objet et un fichier exécutable. Ce processus est appelé processus de construction statique.
Quelle est la différence entre DLL et LIB ?
Les bibliothèques LIB peuvent être appelées pendant la compilation, mais les bibliothèques DLL ne peuvent être appelées que pendant l'exécution. Les fichiers LIB sont nettement plus volumineux que les fichiers DLL. Un problème très courant avec les fichiers DLL est le problème de version. Cela se produit lorsque le code de la DLL est modifié et que l'application utilise une mauvaise version d'une DLL. Ce n'est pas un problème associé aux fichiers LIB. En termes de réutilisabilité, lors de l'écriture de nouvelles versions de systèmes ou d'applications entièrement nouvelles, les DLL sont toujours meilleures que les LIB.