DLL vs LIB
Una libreria è una raccolta di risorse che possono essere utilizzate per sviluppare applicazioni. Una libreria è solitamente composta da subroutine, funzioni, classi, valori e tipi. Durante il processo di collegamento (solitamente eseguito da un linker), le librerie e gli eseguibili fanno riferimento l'uno all' altro. I file di libreria sono divisi in librerie statiche e dinamiche a seconda dell'ora in cui le subroutine vengono caricate nell'applicazione di destinazione. Di conseguenza, i file LIB sono librerie collegate staticamente e i file DLL sono librerie collegate dinamicamente.
Cos'è la DLL?
Dynamic Link Library (più comunemente noto come DLL) è un'implementazione di libreria condivisa sviluppata da Microsoft. Utilizza le estensioni.dll,.ocx o.drv e vengono utilizzate nei sistemi operativi Microsoft Windows e OS/2..dll viene utilizzato dai normali file DLL. E l'estensione.ocx viene utilizzata dalle librerie che contengono controlli ActiveX e l'estensione.drv viene utilizzata dai file dei driver di sistema legacy. Il formato del file DLL è lo stesso dei file EXE di Windows (file eseguibili portatili su Windows a 32 bit/64 bit e Nuovo eseguibile su Windows a 16 bit). Pertanto, qualsiasi combinazione di codice, dati e risorse può essere contenuta in file DLL (proprio come nei file EXE). In effetti, i file di dati con il formato di file DLL sono chiamati DLL di risorse. Le librerie di icone (con estensione.icl) e i file di font (con estensione.fon e.fot) sono esempi di DLL di risorse.
I componenti chiamati sezioni costituiscono una DLL e ogni sezione ha i propri attributi come di sola lettura/scrivibile ed eseguibile/non eseguibile. Le sezioni di codice sono eseguibili, mentre le sezioni di dati non sono eseguibili. Le sezioni di codice sono condivise e le sezioni di dati sono private. Ciò significa che tutti i processi che utilizzano la DLL utilizzeranno la stessa copia del codice, mentre ogni processo avrà la propria copia dei dati. La libreria dinamica principale per Windows è kernel32.dll, che contiene le funzioni di base (funzionalità relative a file e memoria) su Windows. COM (Component Object Model) è l'estensione della DLL a OOP (Object Oriented Programming). Le DLL convenzionali sono più facili da usare rispetto ai file COM.
Cos'è LIB?
I file LIB sono librerie statiche (note anche come librerie collegate staticamente). I file LIB contengono una raccolta di subroutine, funzioni esterne e variabili. I file LIB vengono risolti in fase di compilazione (anziché in fase di esecuzione). Il codice viene effettivamente copiato nell'applicazione di destinazione. Un compilatore, un linker o un raccoglitore eseguirà questa risoluzione e produrrà un file oggetto e un file eseguibile. Questo processo è chiamato processo di compilazione statico.
Qual è la differenza tra DLL e LIB?
Le librerie LIB possono essere chiamate durante la compilazione, ma le librerie DLL possono essere chiamate solo durante il runtime. I file LIB sono significativamente più grandi dei file DLL. Un problema molto comune con i file DLL è il problema del controllo delle versioni. Ciò accade quando il codice della DLL viene modificato e l'applicazione utilizza una versione errata di una DLL. Questo non è un problema associato ai file LIB. In termini di riutilizzabilità, quando si scrivono nuove versioni di sistemi o applicazioni completamente nuove, le DLL sono sempre migliori delle LIB.