Использование VS2015 для компиляции C++ для Vista

Несколько дней назад я задал вопрос в шапке на форуме Microsoft. Мне дали два варианта, которые ИМХО не очень хороши:

  1. Установите распространяемые компоненты VS2015 на целевой компьютер.
  2. Скомпилируйте статически, чтобы код не вызывал DLL-файлы VS2015.

Первый вариант резко увеличивает время установки моего приложения.

Второй вариант резко увеличивает размер бинарных файлов, увеличивает время сборки и неприменим при компиляции с флагом /CLR.

Теперь кажется, что, перенеся свою разработку на Visual Studio 2015, я должен отказаться от поддержки Vista (на самом деле, и для Windows 7) или предоставить более плохой продукт, чем тот, который я предоставлял ранее.

Примечание. Я надеялся, что использование платформы Toolset = v140_xp решит проблему, но, похоже, это не так.

Пожалуйста, просветите меня с лучшим решением.


person Shaul    schedule 08.11.2015    source источник
comment
Распространяемые файлы VS2015 - правильный способ сделать это.   -  person Andrew Komiagin    schedule 08.11.2015
comment
Даже если бы вы использовали более раннюю версию Visual Studio, у вас все еще была бы эта проблема. Старая версия Windows не гарантирует наличия обновления, которое установит более новые библиотеки DLL MSVCRT после его выпуска. Я уже давно ответил на этот вопрос относительно двоичных файлов VS 2010. Ответ по-прежнему действителен для VS 2015. 2015 скачать здесь< /а>   -  person selbie    schedule 08.11.2015
comment
В более старых версиях VS вы могли добавить в свою установку необходимые файлы DLL (например, msvcp110.dll, msvcr110.dll). В моем случае это решило проблему. Уже нет. Добавление vcruntime14.dll только продвигает проблему на один шаг вперед к новому списку отсутствующих DLL-файлов.   -  person Shaul    schedule 08.11.2015
comment
Очевидно, вам нужно распространять правильный набор файлов времени выполнения. Ничего нового.   -  person David Heffernan    schedule 08.11.2015
comment
@DavidHeffernan Я не согласен. MS предоставляет параметры Target и Toolset с намерением, насколько я понимаю, что вы сможете создавать приложения, которые работают на старых платформах.   -  person Shaul    schedule 08.11.2015
comment
Вам все еще нужно предоставить среду выполнения   -  person David Heffernan    schedule 08.11.2015


Ответы (1)


Ситуация несколько изменилась с VS2015. В этой статье объясняется, что вам нужно сделать: http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introduction-the-universal-crt.aspx

Короче говоря, Universal CRT теперь является компонентом Windows. Он поставляется с Windows 10 и через обновление Windows в более ранних версиях. Ваши варианты:

  1. Положитесь на пакеты обновлений Windows.
  2. Примените распространяемый компонент среды выполнения.
  3. Статическая ссылка, что настоятельно не рекомендуется.
  4. Разверните двоичные файлы, необходимые для локальной установки среды выполнения.

Этот последний вариант соответствует тому, что вы сейчас делаете. В статье говорится:

Поддерживается локальное развертывание Universal CRT. Чтобы получить двоичные файлы для локального развертывания приложения, установите пакет средств разработки программного обеспечения Windows (SDK) для Windows 10.  Двоичные файлы будут установлены в папку C:\Program Files (x86)\Windows Kits\10\Redist\ucrt. Вам нужно будет скопировать все библиотеки DLL вместе с вашим приложением (обратите внимание, что набор необходимых DLL различается в разных версиях Windows, поэтому вы должны включить все библиотеки DLL, чтобы ваша программа работала во всех поддерживаемых версиях Windows). ).

person David Heffernan    schedule 08.11.2015