Tôi đã dự án C++ không được quản lý trong Visual Studio 2010. Nó sử dụng tăng cường, glut và một thư viện khác từ một nhà cung cấp.Kết nối và triển khai động và tĩnh trong Visual Studio 2010
Tôi đã thiết lập dự án để tạo thêm khả năng thực thi "dll-indepenendent". Tất cả các thư viện boost đều được liên kết tĩnh và không cần dll trong thư mục chứa file thực thi.
Điều tương tự cho Glut, tôi đã liên kết glut32.lib tĩnh thay vì glut32.dll và một lần nữa không có vấn đề gì.
Tôi đã chọn cho thư viện Thời gian chạy phiên bản NON-dll, tức là Gỡ lỗi đa luồng (dành cho cấu hình Debug) và Đa luồng cho cấu hình phát hành.
Bây giờ, nhà cung cấp mà tôi đã nói trước đây, cung cấp hai lựa chọn thay thế là Vendor.lib và Vendor.dll.
Các Vendor.lib được thêm vào trong Linker-> phụ thuộc bổ sung nhưng lúc chạy tôi luôn phải đặt Vendor.dll trong cùng thư mục của tệp thực thi, nếu không môi trường thời gian chạy sẽ phàn nàn vì không tìm thấy Nhà cung cấp thư viện .dll.
Tôi nên giải quyết vấn đề này như thế nào? Tôi muốn tránh để đưa vào mỗi thư mục các tập tin .dll.
Tôi không muốn đặt dll trong cùng một thư mục của exe và nói chung các nguyên tắc để triển khai các ứng dụng giao diện điều khiển C++ không được quản lý trong Visual Studio là gì?
Tôi biết có rất nhiều câu hỏi và các trang về lập luận này nhưng không ai trong số những người làm rõ tôi điểm này.
Một số ý tưởng?
Đây không phải là MS cụ thể. Linux cũng có thư viện nhập. – rubenvb
Unix có hai loại "thư viện": thư viện (tệp .a) và đối tượng được chia sẻ (tệp .so).Một nhà cung cấp cung cấp một thư viện (theo nghĩa chung) thường sẽ cung cấp cả hai. Nếu bạn liên kết với tệp .a, bạn liên kết tĩnh và nếu bạn liên kết với .so, bạn liên kết động. Vấn đề với giải pháp của Microsoft là 1) bạn có hai tệp riêng biệt cho liên kết động và 2) một trong các tệp có cùng tên với thư viện tĩnh. –
Cảm ơn bạn đã trả lời. Có lẽ tôi không phải là người duy nhất bối rối về chủ đề này. Vì vậy, như bạn đang nói, có hai loại tệp .lib, một tệp được tạo khi thư viện động là cần thiết và một tệp khác có thể là thư viện tĩnh. Tôi không tìm thấy một tập tin Vendor.lib khác, vì vậy tôi đoán tôi đang ở trong trường hợp đầu tiên ... Cảm ơn bạn! – linello