Отказ от ответственности: это обходной путь , а не решение вашего ответа, но все же очень жизнеспособная возможность.
Если вы хотите быть абсолютно уверены, что нет никаких зависимостей от самой 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).