DLL vs LIB
O bibliotecă este o colecție de resurse care pot fi folosite pentru a dezvolta aplicații. O bibliotecă este de obicei alcătuită din subrutine, funcții, clase, valori și tipuri. În timpul procesului de conectare (de obicei, realizat de un linker), bibliotecile și executabilele fac referire una la alta. Fișierele bibliotecii sunt împărțite în biblioteci statice și dinamice, în funcție de momentul în care subrutinele sunt încărcate în aplicația țintă. În consecință, fișierele LIB sunt biblioteci legate static, iar fișierele DLL sunt biblioteci conectate dinamic.
Ce este DLL?
Dynamic Link Library (cunoscută mai frecvent ca DLL) este o implementare a bibliotecii partajate dezvoltată de Microsoft. Utilizează extensiile.dll,.ocx sau.drv și sunt utilizate în sistemele de operare Microsoft Windows și OS/2..dll este folosit de fișierele DLL obișnuite. Și extensia.ocx este folosită de bibliotecile care conțin controale ActiveX, iar extensia.drv este utilizată de fișierele de driver de sistem vechi. Formatul de fișier DLL este același cu fișierele Windows EXE (fișiere executabile portabile pe Windows pe 32 de biți/64 de biți și fișiere executabile noi pe Windows pe 16 biți). Prin urmare, orice combinație de cod, date și resurse poate fi conținută în fișierele DLL (la fel ca în fișierele EXE). De fapt, fișierele de date cu formatul de fișier DLL sunt numite DLL de resurse. Bibliotecile de pictograme (cu extensia.icl) și fișierele de font (cu extensiile.fon și.fot) sunt exemple de DLL-uri de resurse.
Componentele numite secțiuni alcătuiesc un DLL și fiecare secțiune are propriile atribute, cum ar fi doar citire/inscriptibil și executabil/neexecutable. Secțiunile de cod sunt executabile, în timp ce secțiunile de date nu sunt executabile. Secțiunile de cod sunt partajate, iar secțiunile de date sunt private. Aceasta înseamnă că toate procesele care utilizează DLL vor folosi aceeași copie a codului, în timp ce fiecare proces va avea propria copie a datelor. Biblioteca dinamică principală pentru Windows este kernel32.dll, care conține funcțiile de bază (funcționalități legate de fișiere și memorie) pe Windows. COM (Component Object Model) este extensia DLL la OOP (Object Oriented Programming). DLL-urile convenționale sunt mai ușor de utilizat decât fișierele COM.
Ce este LIB?
Fișierele LIB sunt biblioteci statice (cunoscute și ca biblioteci legate static). Fișierele LIB conțin o colecție de subrutine, funcții externe și variabile. Fișierele LIB sunt rezolvate în timp de compilare (spre deosebire de timpul de execuție). Codul este de fapt copiat în aplicația țintă. Un compilator, linker sau un liant va face această rezoluție și va produce un fișier obiect și un fișier executabil. Acest proces se numește proces de construire static.
Care este diferența dintre DLL și LIB?
Bibliotecile LIB pot fi apelate în timpul compilării, dar bibliotecile DLL pot fi apelate numai în timpul rulării. Fișierele LIB sunt semnificativ mai mari decât fișierele DLL. O problemă foarte comună cu fișierele DLL este problema versiunilor. Acest lucru se întâmplă atunci când codul DLL-ului este modificat și aplicația folosește o versiune greșită a unui DLL. Aceasta nu este o problemă asociată fișierelor LIB. În ceea ce privește reutilizarea, atunci când scrieți versiuni noi de sisteme sau aplicații complet noi, DLL-urile sunt întotdeauna mai bune decât LIB-urile.