2009-05-01 42 views
34

Tôi đã có trải nghiệm C++ nhưng không có MSVC.Tham chiếu DLL trong Visual C++

Điều tôi đang cố gắng làm là kết hợp một .dll từ dự án nguồn mở vào dự án của tôi. Mã có sẵn và tôi đã xây dựng nó. Tôi có .dll cũng như .lib như tôi hiểu nó là cần thiết cho các dự án C++.

Rất tiếc, không có đơn giản "Thêm tham chiếu", thả .dll của tôi vào thư mục bao gồm và thêm vào giải pháp của tôi. Tôi đã chỉnh sửa các trang thuộc tính của dự án, tùy chọn C/C++ Additional Include Directories cũng như thêm .lib làm phụ thuộc liên kết bổ sung. Tôi đã tạo một thư mục bao gồm cho dll và lib bên trong cây giải pháp của tôi.

Vấn đề của tôi là khi tôi cố gắng đưa các tệp tiêu đề từ tài liệu, đầu ra VS sẽ phát ra các thông báo lỗi. Bây giờ tôi nhận ra rằng tôi đang sử dụng kết hợp dll/lib và các tệp .h không có trong giải pháp của tôi, vậy làm cách nào để thêm vào bao gồm đúng? Tôi đang sử dụng bộ công cụ QT cũng đang làm việc nhưng làm thế nào tôi thêm tiêu đề/dll khác từ thư viện nguồn mở eludes tôi.

Ai đó có thể vui lòng chỉ cho tôi đúng hướng.

+1

Bạn nói "VS xuất ra các thông báo lỗi", nhưng chúng ta cần phải biết những gì họ đã sửa chữa nó. – GManNickG

+0

Tôi có các tệp .cpp và .h trong Solution/src. Dll/lib nằm trong Solution/include. Tôi đã thêm giải pháp/bao gồm "Linker -> Thư viện Thư viện Bổ sung" và "C/C++ -> Thư mục Bao gồm Bổ sung". Tiêu đề mà tôi cần là QTwitLib.h từ thư viện TwitLib. Một #include "QTwitLib.h" hoặc thậm chí ../ hoặc bao gồm/QTwitLib.h tất cả cho tôi một "lỗi nghiêm trọng: Không thể mở bao gồm tập tin: Không có tập tin như vậy". –

+0

Không thể không tự hỏi những gì làm cho điểm (và phê duyệt) một chỉnh sửa tầm thường, không quan trọng cho một bài viết 7 năm. – dxiv

Trả lời

70

Bạn cần phải làm một vài điều để sử dụng thư viện:

  1. Hãy chắc chắn rằng bạn có cả * .lib và * .dll từ thư viện bạn muốn sử dụng. Nếu bạn không có dấu * .lib, hãy bỏ qua # 2

  2. Đặt tham chiếu đến * .lib trong dự án. Nhấp chuột phải vào tên dự án trong Solution Explorer và sau đó chọn Configuration Properties-> Linker-> Input và đặt tên của lib trong thuộc tính Dependencies bổ sung.

  3. Bạn phải đảm bảo rằng VS có thể tìm thấy thư bạn vừa thêm vào, vì vậy bạn phải vào menu Công cụ và chọn Tùy chọn ... Sau đó, bên dưới Dự án và Giải pháp chọn Thư mục VC++, chỉnh sửa tùy chọn Thư mục Thư viện. Từ đây bạn có thể thiết lập thư mục chứa thư viện mới của bạn bằng cách chọn 'Library Files' trong hộp thoại 'Show Directories For:'. Chỉ cần thêm đường dẫn đến tệp lib của bạn trong danh sách các thư mục. Nếu bạn không có một lib, bạn có thể bỏ qua điều này, nhưng trong khi ở đây bạn cũng sẽ cần phải thiết lập thư mục có chứa các tập tin tiêu đề của bạn cũng như trong 'Bao gồm các tập tin'. Làm điều đó giống như cách bạn thêm lib.

Sau khi thực hiện việc này, bạn nên đi và có thể sử dụng thư viện của mình. Nếu bạn không có một tập tin lib bạn vẫn có thể sử dụng dll bằng cách nhập nó cho mình. Trong quá trình khởi động ứng dụng, bạn có thể tải dll một cách rõ ràng bằng cách gọi LoadLibrary (xem: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx để biết thêm thông tin)

Chúc mừng!

EDIT

Hãy nhớ sử dụng #include < foo.h> như trái ngược với #include "foo.h". Các tìm kiếm trước bao gồm đường dẫn. Sau này sử dụng các tệp dự án cục bộ.

+24

Câu trả lời hoàn hảo. Tôi chỉ muốn thêm một bản cập nhật: trong VS 2010, bước 3 đã được thay đổi một chút; Bây giờ bạn nhấn chuột phải vào dự án của bạn trong Solution Explorer, chọn Properties, sau đó vào Configuration Properties> VC++ Directories. –

+2

Sửa lỗi nếu tôi sai, nhưng tôi nghĩ chúng tôi cũng phải đảm bảo rằng các tệp .dll có thể được tìm thấy khi chạy. Một cách dễ dàng để làm điều này là sao chép các tập tin .dll vào cùng thư mục với .exe cho giải pháp. [Xem tại đây để biết thêm thông tin] (http://stackoverflow.com/questions/4953843/why-cant-visual-studio-find-my-dll). – littleO

+1

Tôi đã cố gắng thực hiện điều đó trong VS 2013 và tôi không tìm cách thực hiện bước 3. – STF

1

Bạn đề cập thêm thư mục bao gồm bổ sung (C/C++ | General) và phụ thuộc lib bổ sung (Linker | Input), nhưng bạn cũng đã thêm thư mục thư viện bổ sung (Linker | General)?

Bao gồm thông báo lỗi mẫu cũng có thể giúp mọi người trả lời câu hỏi vì nó thậm chí không rõ ràng nếu lỗi trong quá trình biên dịch hoặc liên kết.

2

Các thư mục bao gồm bổ sung liên quan đến thư mục dự án. Đây thường là thư mục mà tệp dự án của bạn, * .vcproj, được đặt. Tôi đoán rằng trong trường hợp của bạn, bạn phải thêm "bao gồm" vào thư mục bao gồm và thư viện của bạn.

Nếu bạn muốn chắc chắn thư mục dự án của mình là gì, bạn có thể kiểm tra giá trị của macro $ (ProjectDir). Để thực hiện điều đó, hãy chuyển đến "C/C++ -> Thư mục Bao gồm Bổ sung", nhấn nút "..." và trong hộp thoại bật lên, nhấn "Macro>".

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