2009-03-14 35 views
5

Tôi đã được cung cấp một thư viện nhỏ, bao gồm một tiêu đề .dll, a .h và tệp .def. Tôi khá chắc chắn rằng thư viện được viết bằng C, nhưng có thể là C++.Sử dụng một DLL có tiêu đề .h trong C++

Tôi có thể truy cập các chức năng trong thư viện mà không cần sử dụng phương thức LoadLibrary/GetProcAddress/FreeLibrary thường được nói đến hay không. Tôi không có tập tin .lib - có thường không?

Tôi đã dành 2 ngày qua để tìm kiếm điều này. Có vẻ như kể từ khi tôi đã được đưa ra một tập tin tiêu đề xác định các chức năng tôi muốn sử dụng từ dll, và một tập tin .def tôi không cần phải rõ ràng 'tải' mỗi chức năng bằng tay (LoadLibrary/GetProAddress/FreeLibrary) - trong trường hợp của tôi tôi sẽ sử dụng khoảng 5 hoặc 6 chức năng từ .dll, nhưng có khoảng 70 có sẵn và có vẻ như đó sẽ là một quả bóng đau và kết quả là một mớ hỗn độn không cần thiết của mã.

Cảm ơn lời khuyên nào.

Trả lời

3

Visual C++ có "lib "- tra cứu nó trong trợ giúp trực tuyến.

Sử dụng "lib/def" để tạo tệp .lib.

2

Bạn cần một tệp lib - nó chứa các nhánh mà trình liên kết cần tạo bảng nhập cho DLL của bạn.

Không chắc chắn điều này có hiệu quả hay không, nhưng bạn có thể thử:

Tạo tệp .C có dấu trống và tệp .DEF. Biên dịch như một DLL với cùng tên chính xác để tạo ra .lib. Vứt bỏ các DLL mới, và liên kết với lib, nếu DLL hiện tại là trong cùng một thư mục như exe của bạn chương trình của bạn sẽ có thể tải và ràng buộc nó.

Tôi tin rằng điều này sẽ hoạt động vì DLL gốc không được đặt tên mạnh.

7

Có một số cách để tạo ra một thư viện nhập khẩu đối với một DLL - Microsoft tài liệu một phương pháp để tạo ra một bằng cách xây dựng tập tin .DEF riêng bạn:

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