Какие библиотеки DLL я должен поставлять вместе с моим EXE, чтобы использовать Windows 10 Universal CRT?
Я использовал Visual Studio 2015 для компиляции C-программы в 32-битный EXE, который динамически связывается с CRT. Я хочу разрешить пользователям загружать и запускать этот EXE-файл без необходимости запуска VCRedist
бинарный первый. Поэтому кажется, что мне нужно развернуть некоторые библиотеки DLL "локально".
Предположим, что на компьютере пользователя установлен универсальный CRT (т. Е. Установлена Windows 10 или более ранняя версия, включающая соответствующий Центр обновления Windows).
Это необходимо и достаточно только для отправки C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\vcruntime140.dll
рядом с моим EXE?
Будет ли ситуация точно такой же, если я использую Visual Studio 2017?
2 ответа
Если вы хотите избежать запуска VCRedist в целевой системе, вы должны распределить ВСЕ dll внутри следующих двух каталогов вместе с вашим.exe
Первый:
(VS2015) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT
(VS2017) C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.15.26706\x86\Microsoft.VC141.CRT
второй
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86
При компиляции 64-битного приложения замените "x86" на "x64" в каталогах.
Вы, вероятно, хотите связать свои зависимости статически.
Шаги для достижения этого в Visual Studio:
- открыто
Project Properties
- Выбрать
C/C++
- Выбрать
Code Generation
- За
Runtime Library
, ВыбратьMulti-threaded (/MT)
Это будет работать на всех последних версиях Visual Studio. Полученный EXE должен быть автономным.