Использовать Visual Studio 2012 и компилироваться со старым набором инструментов платформы?

Проблема

Я использую Visual Studio 2012 для разработки C ++ DLL. На некоторых компьютерах эти DLL не могут быть загружены, потому что отсутствует набор инструментов платформы, который установлен на «v110».

Я попытался установить более старое время работы c ++. Они не устанавливались, потому что «новая версия уже установлена». Я также установил текущий Windows SDK, но на нем нет других элементов, кроме v110.

Вопрос

Как я могу скомпилировать мою C ++ DLL со старой версией среды выполнения C ++, чтобы она работала на машинах, не являющихся разработчиками?

Набор инструментов для платформы - v110

В соответствии с этой страницей в MSDN вам нужно иметь соответствующую версию Visual Studio (2008 или 2010) или соответствующий пакет Windows SDK для «Набор инструментов платформы», чтобы просмотреть эти версии:

Чтобы изменить набор инструментов целевой платформы, у вас должна быть установлена ​​соответствующая версия Visual Studio или SDK Windows Platform.

Вы также немного путаетесь между «Platform Toolset», который контролирует, какой компилятор / компоновщик / etc. используется для создания вашего приложения и «Visual C ++ Redistributable», который необходим для запуска вашего приложения. Вы не можете установить «Платформенный набор инструментов» на ПК пользователя, и вы также не сможете сделать его доступным, установив на своем ПК разработчика определенный «Распространяемый на Visual C ++».

Кроме того, насколько мне известно, Visual C ++ Redistributable не включает время исполнения MFC. Они доступны как отдельный MSI-модуль слияния (MSM).

Я хотел бы поделиться некоторой информацией, с которой я столкнулся, и понял, как использовать их для моих целей.

По-видимому, это хороший вариант использования статической привязки. Это не всегда срабатывало для меня, но для моего меньшего проекта это работает неплохо. И результатом является DLL без зависимостей, отличных от kernel32.dll и т. П.

Просто используйте /MT для конфигурации выпуска и /MTd для отладки, и все будет в порядке.

Проблема в том, что такой разработчик, как я, получает текущую версию Visual Studio вскоре после ее выпуска, но вы не можете ожидать, что обычные пользователи будут устанавливать время выполнения, которое всего лишь несколько недель назад. И установка разных версий Visual Studio просто для использования старой среды выполнения определенно не то, что вы хотите.

Статическая связь в Visual Studio 2013

Подсказка для интернет-архива. (Я не могу прокомментировать приведенные выше высказывания, я не знаю, почему)

Чтобы использовать набор инструментов платформы v90 (= Visual Studio 2008) в новой Visual Studio (я тестирую 2013 и 2015), вам необходимо установить Visual Studio 2008 и, кроме того, Visual Studio 2010, поскольку определения набора инструментов платформы vs90 в папке программ MS Build часть Visual Studio 2010.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets для v90 и v100

 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0 

для V110 V120 и V140

представляющие версии Visual Studio: v90 = 2008, v100 = 2010, V110 = 2012, V120 = 2013, V140 = 2015.

После установки vob VS2010 в новых версиях Visual Studio 2013 и 2015 версии можно использовать инструменты для платформы vs90 и vs100. (Это работает без новой установки Visual Studio 2013/2015.) Я думаю, Visual Studio 2012 делает это так же, как VS2013 и VS2015.

хорошо, это зависит от того, что вы пытаетесь построить. Некоторые вещи, возможно, поддерживаются при установке Windows SDK 7.1. см. этот пост, тот же вопрос , но если ваш проект зависит от MFC, то, к сожалению, похоже, что это вообще невозможно, главным образом потому, что VS2010 не развертывает библиотеки MFC.

  • Как многократно запускать тест с данными, считываемыми из CSV-файла (передача данных)
  • выпадающий список имени имени и имени classа отсутствует (настройка визуальной студии)
  • Как заставить файл решения (SLN) открыть в Visual Studio 2013?
  • Почему этот компилятор кода C ++ (не-void функция не возвращает значение)
  • Intellisense и предложение кода не работают в Visual Studio 2012 Ultimate RC
  • MVC4 Scaffolding Add Controller дает ошибку «Не удается получить метаданные ...»
  • Как установить студию XNA на Visual Studio 2012?
  • MSBuild в решении TeamCity для Visual Studio 2012
  • Ошибка ReSharper WPF: «Не удается разрешить символ« MyVariable »из-за неизвестного DataContext»
  • Как отключить автозавершение скобок / кавычек в Visual Studio
  • Intellisense не работает для JavaScript в Visual Studio 2012
  • Давайте будем гением компьютера.