2011-12-20 44 views
10

Tình huống:VS2010: Liên kết trong một thư viện tĩnh tĩnh

Tôi đang xây dựng thư viện với VS2010 và phụ thuộc vào LibraryA. Tôi chỉ sử dụng một trong nhiều tính năng mà LibraryA cung cấp, vì vậy tôi muốn liên kết nó theo cách tĩnh.

Mọi thứ tôi đọc về điều này sẽ cho tôi biết để đặt toàn bộ dự án liên kết tĩnh với MFC, đó là điều tôi không muốn làm. Tôi chỉ tốt với thư viện của tôi tự động liên kết với các cửa sổ DLL; Tôi chỉ muốn liên kết tĩnh với LibraryA mà thôi.

Chọn xung quanh với các cửa sổ tùy chọn, dường như tôi không thấy tùy chọn này. Nó thực sự là tất cả hay không có gì?

Cảm ơn, -Ben

+0

"liên kết tĩnh với MVC" khó giải thích. Bạn có nghĩa là CRT? Chỉ có tùy chọn/MD vs/MT quan trọng. Các DLL Windows không phải là một vấn đề và luôn được liên kết động, không có tùy chọn nào khác. –

+0

Thư việnA có phải là một dll (có liên kết lib) hay chỉ là một lib? Một số thư viện của bên thứ ba đến như là cả hai để bạn có thể chọn cách bạn muốn liên kết nó. Nếu đó là thư viện/mã của bạn, bạn có thể chọn cách bạn xây dựng và liên kết nó. –

+0

@HansPassant - Lỗi của tôi (đó là MFC). Xem http://stackoverflow.com/questions/3230/how-do-you-pack-a-visual-studio-c-project-for-release - Câu trả lời hàng đầu có nói về nó. Nó gần với tình hình của tôi, nhưng không giống nhau. – Ben

Trả lời

27

Trả lời câu hỏi của riêng tôi ở đây:

Tất cả bạn cần làm gì để tĩnh liên kết thư viện trong VS là:

1) Thêm file .lib đến danh sách được tìm thấy trong thuộc tính -> linker -> input: Additional Dependencies.

2) Thêm thư mục tệp .lib được đặt tại các thuộc tính -> trình liên kết -> chung: Thư mục thư viện bổ sung.

Nếu tệp .lib là thư viện được liên kết tĩnh, thì đó là tất cả những gì bạn phải làm.

Lý do chính khiến tôi nhầm lẫn là tệp .lib cũng có thể là tệp đồng hành bên cạnh dll và không phải là thư viện tĩnh.

+6

Bạn không phải là kẻ ngốc, bạn (có thể) là con người. Lưu ý rằng nếu bạn đang xây dựng cả hai dự án cùng một lúc (ví dụ: trong cùng một giải pháp), bạn có thể đặt một dự án phụ thuộc vào khác và Visual Studio sẽ tự động nhập thư viện mà không cần phải thêm nó vào "Bổ sung" Phụ thuộc ". – adelphus

+2

Không phải là một thằng ngốc ... cảm ơn vì đã viết câu trả lời này, tôi cần nó. –

+0

Bài đăng này đã giúp tôi: http://stackoverflow.com/questions/6402586/know-if-lib-is-static-or-import – meawoppl

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