Trong trường hợp thư viện nhập cho DLL, tệp .lib thực hiện không chứa bất kỳ mã thực tế nào. Về cơ bản nó chỉ chứa một danh sách các hàm trong DLL liên kết - đủ cho trình liên kết nhúng một tham chiếu đến DLL đó vào một cái gì đó được liên kết với thư viện, nhưng không có nhiều thứ khác.
Tệp .exp là tệp xuất - về cơ bản chỉ giống như tệp .lib. Nó được sử dụng (ít nhất là chủ yếu) khi bạn có một phụ thuộc vòng tròn. Ví dụ, giả sử bạn có một DLL hoạt động như một trình cắm thêm cho một tệp thực thi. Tệp thực thi cung cấp một số hàm được xuất để sử dụng bởi các trình cắm thêm DLL, nhưng cũng cần có khả năng gọi một số hàm trong các trình cắm thêm (ví dụ: để tải và khởi tạo một trình cắm thêm).
DLL sẽ không liên kết cho đến khi tệp thi hành được xây dựng để cung cấp tệp .lib - nhưng tệp thi hành sẽ không liên kết cho đến khi DLL được tạo để cung cấp tệp .lib. Để phá vỡ sự phụ thuộc, bạn chạy trình liên kết đối với tệp thực thi, không thành công (vì nó không thể tìm thấy tệp .lib cho tệp DLL), nhưng sẽ tạo tệp .exp. Sau đó bạn liên kết DLL với tệp .exp cho tệp thực thi. Sau đó bạn có thể chạy lại liên kết để tạo ra tệp thực thi, sử dụng tệp .lib cho tệp DLL.
Nguồn
2010-04-28 05:38:22