Có 3 loại thư viện trên Windows:
thư viện đối tượng
- (* .lib)
- thư viện nhập khẩu (* .lib)
- thư viện động (* .dll)
thư viện đối tượng được liên kết tĩnh. Chúng chứa các định nghĩa đối tượng đầy đủ của mã được trừu tượng hóa bởi thư viện.
thư viện nhập là một dạng đặc biệt của thư viện đối tượng. Thay vì chứa mã, chúng chứa thông tin cho trình liên kết mà cuối cùng ánh xạ tệp thực thi vào thư viện liên kết động.
thư viện liên kết động, như thư viện đối tượng, mã cung cấp cho chương trình của bạn. Tuy nhiên, mã này được tải vào thời gian chạy và không được biên dịch vào exe của bạn.
Bạn không cần phải liên kết thư viện nhập. Thay vào đó bạn có thể gọi LoadLibrary() và tra cứu các điểm vào API theo tên hoặc thứ tự. (Bạn luôn phải cho biết mã DLL nào và ở đâu trong API của DLL bạn muốn nhập.)
Các nhận xét khác ở đây là chính xác ở chỗ bạn không thể tạo DLL thành lib tĩnh mà không biên dịch lại mã cho thư viện - đó là một loại đầu ra khác.
Không có tùy chọn nào cho phép liên kết tĩnh mã từ tệp .dll cụ thể không? –
Tôi nghĩ rằng bạn phải biên dịch thư viện để liên kết tĩnh, tôi không chắc chắn bạn có thể thay đổi một dll thành một thư viện liên kết tĩnh sau khi nó đã được biên dịch. –
@Andrew Vì vậy, các tệp dll luôn đi kèm với một .lib? Làm cách nào để biết khi nào .lib không đủ và tôi cần cung cấp dll? – undu