Відмова: Це рішення , а не рішення вашої відповіді, але все-таки дуже життєздатна можливість.
Якщо ви хочете бути абсолютно впевненими, що від самого VS немає залежностей - але це має свої власні недоліки - у налаштуваннях генерації коду ви можете скористатися функцією Multi Threaded (MT) / Multi Threaded Debug (MD) (для налагодження налагодження ) замість MT DLL (MTd) / MT Debug DLL (MDd).
Які недоліки?
- Це збільшує розмір виконуваного файлу та ваш бінарний (хоча якщо ви робите гру, це, мабуть, незначно)
- складений таким чином, не матиме користі від оновлень dll часу виконання. (наприклад, якщо Microsoft випускає VC ++ 2015 SP2, SP3, SP4 тощо). Але це залежить від вас.
- Більше використання оперативної пам’яті (також мізерно), оскільки ви не використовуєте повторно існуючий / завантажений код (DLL)
- Ви повинні бути впевнені, що всі бібліотеки, до яких ви посилаєтеся, зібрані в один і той же час виконання, інакше посилання може бути невдалим, або можуть виникнути цікаві помилки виконання (напевно, ні, але це сталося зі мною один раз у житті в застарілому проекті, який оновлено до найновіший VS)
А які плюси?
- у вашому виконуваному файлі не буде "зовнішніх" залежностей від самого VS (відсутність вимоги msvc * .dll).
- деякі люди сприймають це як підвищення продуктивності, оскільки ви виключаєте накладні витрати на виклики DLL, хоча це теоретично вірно, поліпшення на практиці незначні
Перевірте це посилання, щоб отримати більш детальне пояснення, а також можливі помилки та падіння, які можуть виникнути при використанні статичного часу виконання.
Іншим вирішенням цього питання є те, щоб помістити всі необхідні DLL-файли, де знаходиться ваш бінарний файл. Ваша програма не отримає користі від оновлень (до бібліотек виконання), але це все.
Справжнє рішення полягає в тому, щоб розподілити додаток у режимі DLL випуску / не налагодження (MTd) та поставити правильний інсталятор VC ++, який можна перерозподілити (та будь-який інший інсталятор бібліотеки, який ви можете використовувати, наприклад, OpenAL, DirectX9, PhysX), і дозволити користувачеві запускати це перед запуском програми (як вказано на інші відповіді).
Також обов’язково повідомте користувачеві, що йому, можливо, необхідно оновити свої драйвери графічного процесора (оскільки вони містять декілька режимів виконання для багатьох додатків, наприклад, OpenGL, Vulcan).