БлогNot. Есть ли статическая линковка в Visual Studio

Есть ли статическая линковка в Visual Studio

Из серии часто задаваемых вопросов :)

"Как сделать, чтобы программа, скомпилированная в Studio, запускалась на "чистой" Windows, без необходимости иметь установленный Visual Studio Redistributable Pack?", и т.п.

Кратко говоря, ключ /MT

Ввести его можно вот как: верхнее меню Проект - Свойства - C/C++ - Создание кода - Библиотека времени выполнения = /MT, Применить. Потом выбрать из списка конфигурацию Release вместо Debug и пересобрать проект (верхнее меню Сборка - Очистить проект, затем Перестроить).

При этом должна быть выключена поддержка CLR-среды, то есть, для приложений "с интерфейсом", давно уже являющихся не полноценными EXE'шками, а корявыми CIL'ами, подход не сработает.

Верхнее меню Проект - Свойства - C/C++ - Общие - Поддержка общеязыковой среды выполнения (CLR) = Без поддержки CLR-среды

Теоретически в EXE'шку "вшивается" всё, что может "висеть" отдельно в виде DLL. Кроме тех DLL, что намертво встроены в масдайку.

Но выбор именно таков, или CLR-приложение, которое выполняется только под платформой .NET Framework, или обычное консольное. И тем, и другим одновременно быть не получится... Для CLR флаг кодогенерации ставится в /MD или /MDd (отладка), иначе MT или /MTd, но CLR в таком случае можно только отключить.

Или читайте о вариантах развёртывания, но учтите, что классические инсталляторы .msi больше не поддерживаются, ещё со Studio 2017. Ну а когда они придут за консолью - тогда уже и всё :)

28.04.2021, 19:52 [2272 просмотра]


теги: windows памятка софт studio

К этой статье пока нет комментариев, Ваш будет первым