Sự khác biệt giữa DLL và LIB

DLL vs LIB

Thư viện là một tập hợp các tài nguyên có thể được sử dụng để phát triển các ứng dụng. Một thư viện thường được tạo thành từ chương trình con, hàm, lớp, giá trị và kiểu. Trong quá trình liên kết (thường được thực hiện bởi một trình liên kết), các thư viện và tệp thực thi tạo tham chiếu cho nhau. Các tệp thư viện được chia thành các thư viện tĩnh và động tùy thuộc vào thời gian mà các chương trình con được tải vào ứng dụng đích. Theo đó, các tệp LIB là các thư viện được liên kết tĩnh và các tệp DLL là các thư viện được liên kết động.

DLL là gì?

Thư viện liên kết động (thường được gọi là DLL) là một triển khai thư viện dùng chung được phát triển bởi Microsoft. Nó sử dụng các phần mở rộng dll, .ocx hoặc .drv và chúng được sử dụng trong các hệ điều hành Microsoft Windows và OS / 2. Và phần mở rộng .ocx được sử dụng bởi các thư viện có chứa các điều khiển ActiveX và phần mở rộng .drv được sử dụng bởi các tệp trình điều khiển hệ thống cũ. Định dạng tệp DLL giống như các tệp Windows EXE (Các tệp thực thi di động trên Windows 32 bit / 64 bit và Thực thi mới trên Windows 16 bit). Do đó, mọi kết hợp mã, dữ liệu và tài nguyên đều có thể được chứa trong các tệp DLL (giống như trong các tệp EXE). Trên thực tế, các tệp dữ liệu có định dạng tệp DLL được gọi là DLL tài nguyên. Các thư viện biểu tượng (có phần mở rộng .icl) và tệp phông chữ (với phần mở rộng .fon và .fot) là ví dụ về DLL tài nguyên.

Các thành phần được gọi là các phần tạo nên một DLL và mỗi phần có các thuộc tính riêng như chỉ đọc / ghi và thực thi / không thể thực thi. Các phần mã có thể thực thi được, trong khi các phần dữ liệu không thể thực thi được. Các phần mã được chia sẻ và phần dữ liệu là riêng tư. Điều đó có nghĩa là tất cả các quy trình sử dụng DLL sẽ sử dụng cùng một bản sao của mã, trong khi mỗi quy trình sẽ có bản sao dữ liệu riêng. Thư viện động chính cho Windows là kernel32.dll, chứa các hàm cơ bản (chức năng liên quan đến tệp và bộ nhớ) trên Windows. COM (Mô hình đối tượng thành phần) là phần mở rộng của DLL thành OOP (Lập trình hướng đối tượng). DLL thông thường dễ sử dụng hơn tệp COM.

LIB là gì?

Các tệp LIB là các thư viện tĩnh (còn được gọi là các thư viện được liên kết tĩnh). Các tệp LIB chứa một tập hợp các chương trình con, hàm ngoài và các biến. Các tệp LIB được giải quyết tại thời gian biên dịch (trái ngược với thời gian chạy). Mã này thực sự được sao chép vào ứng dụng đích. Một trình biên dịch, trình liên kết hoặc một chất kết dính sẽ thực hiện độ phân giải này và tạo ra một tệp đối tượng và một tệp thực thi. Quá trình này được gọi là quá trình xây dựng tĩnh.

Sự khác biệt giữa DLL và LIB là gì?

Thư viện LIB có thể được gọi trong thời gian biên dịch, nhưng thư viện DLL chỉ có thể được gọi trong thời gian chạy. Các tệp LIB lớn hơn đáng kể so với các tệp DLL. Một vấn đề rất phổ biến với các tập tin DLL là vấn đề phiên bản. Điều này xảy ra khi mã của DLL bị thay đổi và ứng dụng sử dụng sai phiên bản của DLL. Đây không phải là vấn đề liên quan đến các tệp LIB. Về khả năng sử dụng lại, khi viết các phiên bản mới của hệ thống hoặc các ứng dụng hoàn toàn mới, DLL luôn tốt hơn LIB.