Скомпилирована пара DLL с использованием visual studio 2015 и попыталась развернуть на некоторых старых версиях Windows 7/64 бит. Пробовал также угадать, какая dll необходима для приложения для запуска и копирования MSVCP140.DLL и VCRUNTIME140.DLL - но приложение не могло загрузить dll vs2015. Начал анализировать, что не так - и ходун зависимостей показал зависимости от следующих dll:
API-MS-WIN-CRT-MATH-L1-1-0.DLL
API-MS-WIN-CRT-HEAP-L1-1-0.DLL
API-MS-WIN-CRT-CONVERT-L1-1-0.DLL
API-MS-WIN-CRT-STRING-L1-1-0.DLL
API-MS-WIN-CRT-STDIO-L1-1-0.DLL
API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL
API-MS-WIN-CRT-FILESYSTEM-L1-1-0.DLL
API-MS-WIN-CRT-TIME-L1-1-0.DLL
Это было особенно удивительно, поскольку, насколько я понимаю, CRT отвечает за запуск dll/exe, он не предоставляет услуг более высокого уровня.
Хорошо, попытался выяснить, как избавиться от них или, по крайней мере, свести к минимуму.
Найдена одна статья: https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/
В нем упоминается о выпуске статических библиотек, поэтому я подумал, что могу связать их с ними и избавиться от аддонов черт * L1-1-0.DLL *, но независимо от того, что я пробовал, я не имел успеха. Я попытался связать libvcruntime.lib, libucrt.lib, libcmt.lib, попытался отключить использование опции компоновщика "/nodefaultlib:vcruntime.lib" и даже попытался добавить include directory $(UniversalCRT_IncludePath), а также переопределить некоторые определить, как я пытался угадать, что они работают - ни одна из моих попыток не помогла.
В качестве промежуточного решения я вернулся к использованию Visual studio 2013, где DLL CRT всего две: msvcp120.dll, msvcr120.dll.
Конечно, вы, вероятно, порекомендуете установить время выполнения Visual Studio 2015, но одним из наших требований является поддержка автономного исполняемого файла, который работает без какой-либо установки, поэтому дополнительная установка на данный момент не обсуждается.
Можете ли вы порекомендовать мне что-нибудь еще, чем подождать Visual studio 2017?