.lib cho thư viện được chia sẻ không được sử dụng để liên kết tĩnh, nó được sử dụng để cung cấp cho mối liên kết ý tưởng về những gì được ẩn bên trong tệp .dll. Hãy suy nghĩ về nó như là tập tin tiêu đề mà bạn cung cấp cho các mối liên kết để đảm bảo rằng nó biết về tất cả các chức năng thuộc về .dll và bạn cần. Hãy tự hỏi mình một câu hỏi: làm cách nào bạn sử dụng tệp .dll được tạo mà không có .lib? LoadLibrary không đếm - nó có biến chứng (lớp phương pháp? Mangling?) Và tạo ra một sự không chắc chắn như với opencv_ffmpeg.dll: nó không thể tồn tại trong PATH, và opencv_video liên kết chương trình sẽ vẫn chạy, nhưng sẽ không cho chúng tôi biết bất cứ điều gì, cũng như nó sẽ không chơi video mà không có nó - không có thông báo lỗi rõ ràng. Ngoài ra, phương pháp này là nền tảng cụ thể.
. Thư viện tĩnh khác, chứa một tệp đối tượng chính thức, được đưa trực tiếp vào tệp thi hành.
Ý tưởng cơ bản - cho dù đó là thư viện tĩnh hay chia sẻ, bạn vẫn nên liên kết cả hai cách khá giống nhau - nhưng sau đó, nếu thư viện được chia sẻ, chương trình của bạn sẽ KHÔNG chạy mà không bao gồm .dll tương ứng vào phân phối .
Nguồn
2017-02-01 06:56:53
Có thể bạn sẽ tìm thấy [câu hỏi này] (https://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details) thông tin. – WhozCraig
Hi Gray, câu hỏi được hỏi có tiêu đề hoàn toàn khác, bất kỳ ai cố gắng tìm câu trả lời cho câu hỏi tương tự mà tôi đã hỏi sẽ không tìm kiếm cách thư viện nhập hoạt động, bạn không được sao chép nó, ít nhất là vì lợi ích của người dùng khác tìm ra vấn đề tương tự –