Tuyên bố miễn trừ trách nhiệm: Đây là một cách giải quyết , không phải là giải pháp cho câu trả lời của bạn, nhưng vẫn là một khả năng rất khả thi.
Nếu bạn muốn hoàn toàn chắc chắn rằng không có sự phụ thuộc nào từ chính VS - nhưng nó có nhược điểm riêng - trong cài đặt tạo mã, bạn có thể chọn sử dụng Gỡ lỗi đa luồng (MT) / Gỡ lỗi đa luồng (MD) (cho các bản dựng gỡ lỗi ) thay vì MT DLL (MTd) / MT Gỡ lỗi DLL (MDd).
Nhược điểm là gì?
- Nó làm tăng kích thước thực thi và nhị phân của bạn (mặc dù nếu bạn đang tạo một trò chơi thì điều này có thể không đáng kể)
- được biên dịch theo cách này sẽ không được hưởng lợi từ các bản cập nhật dlls thời gian chạy. (ví dụ: nếu Microsoft phát hành VC ++ 2015 SP2, SP3, SP4, v.v.) Nhưng điều đó tùy thuộc vào bạn.
- Sử dụng nhiều RAM hơn (cũng không đáng kể) vì bạn không sử dụng lại mã hiện có / đã tải (DLL)
- Bạn cần chắc chắn rằng tất cả các thư viện mà bạn liên kết được biên dịch theo cùng thời gian chạy, liên kết khác có thể không thành công hoặc có thể xảy ra lỗi thời gian chạy thú vị (có thể không xảy ra, nhưng nó đã xảy ra với tôi một lần trong đời trong một dự án cũ đã được cập nhật VS mới nhất)
Và những ưu điểm là gì?
- thực thi của bạn sẽ không có phụ thuộc "bên ngoài" từ chính VS (không yêu cầu msvc *.).
- Một số người coi đây là sự gia tăng hiệu suất vì bạn đang loại bỏ chi phí cuộc gọi DLL, trong khi điều này là đúng về mặt lý thuyết, những cải tiến là không đáng kể trong thực tế
Kiểm tra liên kết này để biết giải thích chi tiết hơn và cho các nhược điểm mà bạn có thể gặp phải khi sử dụng thời gian chạy tĩnh.
Một cách giải quyết khác là đặt tất cả các DLL yêu cầu nơi nhị phân của bạn. Ứng dụng của bạn sẽ không được hưởng lợi từ các bản cập nhật (cho các thư viện thời gian chạy) nhưng đó là nó.
Giải pháp thực sự là phân phối ứng dụng ở chế độ phát hành / không gỡ lỗi (MTd) và cung cấp trình cài đặt có thể phân phối lại VC ++ chính xác (và bất kỳ trình cài đặt thư viện nào khác mà bạn có thể sử dụng, ví dụ OpenAL, DirectX9, PhysX) và cho phép người dùng chạy nó trước khi chạy ứng dụng của bạn (như các câu trả lời khác đã chỉ ra).
Ngoài ra, hãy đảm bảo cho người dùng biết rằng họ có thể cần cập nhật trình điều khiển GPU của mình (vì các trình điều khiển này cũng chứa nhiều thời gian chạy cho nhiều ứng dụng, ví dụ OpenGL, Vulcan).