2013-05-19 52 views
5

Tôi đã thấy trong thư viện trình điều khiển ba tệp này. Ba tệp có liên quan như thế nào, thứ tự các tệp được biên dịch là gì và nội dung của mỗi tệp là gì? Thêm vào đó, tôi cũng đã thấy các tệp .a giống như .lib?Tệp Header (.h), tệp Thư viện (.lib) và tệp DLL (.dll) có liên quan như thế nào

+0

mã của bạn chứa tiêu đề .h và tệp nguồn (.c/.cpp). Tiêu đề là các đoạn mã được sao chép/dán mỗi khi bạn #bao gồm chúng trong tệp nguồn của bạn. Khi mã được biên dịch, trình biên dịch sẽ xuất ra các tệp nguồn dưới dạng tệp đối tượng (.o hoặc .obj). Tệp .lib chỉ đơn giản là một tệp lưu trữ chứa tất cả các tệp đối tượng. Thư viện DLL được biên dịch mã có một loạt các hàm được xuất mà bạn có thể sử dụng lại trong mã của mình. Một .exe được biên dịch mã gọi hàm main() khi khởi động. –

Trả lời

4

.lib và .dll là cả hai tệp thực thi của thư viện Windows (tệp .o hoặc .obj), với tệp (.lib) cũ có chứa thứ (hàm, định nghĩa, v.v) mà bạn phải liên kết tĩnh với tệp thi hành của dự án của bạn. Sau này (.dll) đã có trong hệ thống của bạn hoặc bạn đưa nó vào hệ thống của bạn và nó được liên kết động với tệp thi hành của dự án của bạn.

Đối với hệ thống UNIX/Linux, phần mở rộng tệp là .a và .so tương ứng (nghĩa là, .a thay vì .lib, và .so thay vì .dll).

Trong mọi trường hợp, khi soạn thảo dự án của bạn, bạn phải #include một hoặc nhiều tệp .h cung cấp cho bạn bởi thư viện bạn đang sử dụng (chúng được gọi là tập tin tiêu đề), bởi vì đó là nơi thứ bên trong thực thi của thư viện được xác định.

EDIT

Ưu điểm chính của một thư viện liên kết tĩnh là nó là khép kín (không phụ thuộc bên ngoài) nhưng nó làm tăng kích thước của tập tin thực thi của riêng bạn. Nhược điểm chính là các phiên bản trong tương lai phải được biên dịch lại và phân phối lại.

Đối với thư viện được liên kết động, chúng tôi chỉ phân phối lại các tệp thực thi thư viện được cập nhật. Những bất lợi chính là chương trình của chúng tôi dựa vào thư viện đã được cài đặt trên hệ thống của khách hàng.

+0

Cần lưu ý rằng còn có một cái gì đó được gọi là "Thư viện nhập khẩu" kiểm tra http://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details –

Các vấn đề liên quan