5

Tôi đã tải xuống và biên dịch một ứng dụng C++ mã nguồn mở, Frhed.C++ thực thi - MSVCR100.dll không tìm thấy lỗi

Khi tôi chạy phiên bản tôi đã biên soạn, nó yêu cầu MSVCR100 và vài tệp dll khác (một phần của Visual C++ redistributable). Tuy nhiên, khi tôi chạy bản dựng sẵn có sẵn của Frhed gốc, nó chạy mà không cần cài đặt gói C++ redistributable nào.

Tôi có phải sửa đổi bất kỳ tùy chọn biên dịch nào để hủy liên kết chương trình khỏi các thư viện redistributable C++ không?

Trả lời

13

Chương trình ban đầu có lẽ là liên kết tĩnh, trong khi bạn đang cố gắng để tự động liên kết thực thi của bạn, mà kết quả trong một file nhỏ hơn, nhưng một sự phụ thuộc vào các chức năng bên trong MSVCR100.dll (v10 của Microsoft C Runtime Library), mà sẽ đã được đưa vào bên trong tệp thi hành nếu bạn đã liên kết tĩnh.

Để liên kết tĩnh DLL, hãy chuyển đến thuộc tính dự án của bạn và thay đổi chế độ xây dựng từ MD thành MT. Trong Visual Studio 2010/2012, thuộc tính dự án đó là C/C++ -> Code Generation -> Runtime Library.

7

Câu trả lời ngắn gọn là , câu trả lời dài hơn, tốt hơn, lâu hơn.

Thư viện msvcr100.dll là phiên bản 10,0 (ví dụ, phiên bản Visual Studio 2010) của DLL implementation of the C run-time mà bạn có thể yêu cầu bằng cách sử dụng các tùy chọn biên dịch/MD. Để tránh sử dụng phiên bản được liên kết động của thời gian chạy, bạn có thể sử dụng tùy chọn/MT thay thế và liên kết tĩnh thời gian chạy.

Hoặc, bạn có thể redistribute msvcr100.dll (and other files) cùng với chương trình của mình.

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