DLL vs LIB
O bibliotecă este o colecție de resurse care poate fi utilizată pentru a dezvolta aplicații. O bibliotecă este formată de obicei din subrutine, funcții, clase, valori și tipuri. În timpul procesului de conectare (de obicei realizat de un linker), bibliotecile și executabilele fac trimitere una la cealaltă. Fișierele de bibliotecă sunt împărțite în biblioteci statice și dinamice, în funcție de ora la care subrutinele sunt încărcate în aplicația țintă. În consecință, fișierele LIB sunt biblioteci legate static, iar fișierele DLL sunt biblioteci legate dinamic.
Ce este DLL?
Dynamic Link Library (mai frecvent cunoscută sub numele de DLL) este o implementare de bibliotecă partajată dezvoltată de Microsoft. Folosește extensiile.dll,.ocx sau.drv și sunt utilizate în sistemele de operare Microsoft Windows și OS / 2..dll este utilizat de fișierele DLL obișnuite. Și extensia.ocx este utilizată 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 New Executable 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 denumite DLL resurse. Bibliotecile de pictograme (cu extensia.icl) și fișierele de fonturi (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 sale atribute, cum ar fi numai în citire / scriere și executabil / neexecutabil. Secțiunile de cod sunt executabile, în timp ce secțiunile de date sunt neexecutabile. Secțiunile de cod sunt partajate, iar secțiunile de date sunt private. Asta î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ționalitate legată de fișier ș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 timpul compilării (spre deosebire de timpul de execuție). Codul este copiat de fapt î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 construcție 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 frecventă cu fișierele DLL este problema versiunii. Acest lucru se întâmplă atunci când codul DLL este modificat și aplicația folosește o versiune greșită a unui DLL. Aceasta nu este o problemă asociată cu fișierele 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.