DLL vs LIB
Una biblioteca és una col·lecció de recursos que es poden utilitzar per desenvolupar aplicacions. Una biblioteca normalment està formada per subrutines, funcions, classes, valors i tipus. Durant el procés d'enllaç (normalment realitzat per un enllaçador), les biblioteques i els executables fan referència entre si. Els fitxers de la biblioteca es divideixen en biblioteques estàtiques i dinàmiques en funció del moment en què es carreguen les subrutines a l'aplicació de destinació. En conseqüència, els fitxers LIB són biblioteques enllaçades estàticament i els fitxers DLL són biblioteques enllaçades dinàmicament.
Què és DLL?
Dynamic Link Library (més coneguda com a DLL) és una implementació de biblioteca compartida desenvolupada per Microsoft. Utilitza les extensions.dll,.ocx o.drv i s'utilitzen en sistemes operatius Microsoft Windows i OS/2. Els fitxers DLL habituals utilitzen.dll. I l'extensió.ocx l'utilitzen les biblioteques que contenen controls ActiveX i l'extensió.drv els fitxers de controladors del sistema heretats. El format del fitxer DLL és el mateix que els fitxers EXE de Windows (fitxers executables portàtils a Windows de 32 bits/64 bits i nou executable a Windows de 16 bits). Per tant, qualsevol combinació de codi, dades i recursos es pot contenir als fitxers DLL (igual que als fitxers EXE). De fet, els fitxers de dades amb el format de fitxer DLL s'anomenen DLL de recursos. Les biblioteques d'icones (amb extensió.icl) i els fitxers de tipus de lletra (amb extensions.fon i.fot) són exemples de DLL de recursos.
Els components anomenats seccions formen una DLL i cada secció té els seus propis atributs com ara només lectura/escriptura i executable/no executable. Les seccions de codi són executables, mentre que les seccions de dades no són executables. Les seccions de codi es comparteixen i les seccions de dades són privades. Això vol dir que tots els processos que utilitzen la DLL utilitzaran la mateixa còpia del codi, mentre que cada procés tindrà la seva pròpia còpia de les dades. La biblioteca dinàmica principal per a Windows és kernel32.dll, que conté les funcions bàsiques (funcionalitat relacionada amb fitxers i memòria) a Windows. COM (Component Object Model) és l'extensió de DLL a OOP (Programació Orientada a Objectes). Les DLL convencionals són més fàcils d'utilitzar que els fitxers COM.
Què és LIB?
Els fitxers LIB són biblioteques estàtiques (també conegudes com a biblioteques enllaçades estàticament). Els fitxers LIB contenen una col·lecció de subrutines, funcions externes i variables. Els fitxers LIB es resolen en temps de compilació (a diferència del temps d'execució). El codi es copia realment a l'aplicació de destinació. Un compilador, enllaçador o un aglutinador farà aquesta resolució i produirà un fitxer objecte i un fitxer executable. Aquest procés s'anomena procés de compilació estàtica.
Quina diferència hi ha entre DLL i LIB?
Les biblioteques LIB es poden cridar durant el temps de compilació, però les biblioteques DLL només es poden cridar durant el temps d'execució. Els fitxers LIB són significativament més grans que els fitxers DLL. Un problema molt comú amb els fitxers DLL és el problema de versions. Això passa quan es canvia el codi de la DLL i l'aplicació utilitza una versió incorrecta d'una DLL. Aquest no és un problema associat amb els fitxers LIB. Pel que fa a la reutilització, quan s'escriuen noves versions de sistemes o aplicacions completament noves, les DLL sempre són millors que les LIB.