Подтвердить что ты не робот

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

Проблема

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

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

Вопрос

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

Platform toolset is v110

4b9b3361

Ответ 1

Согласно этой странице в MSDN, вам необходимо иметь соответствующую версию Visual Studio (2008 или 2010) или соответствующий Windows SDK для "набора инструментов платформы" ", чтобы просмотреть эти версии:

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

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

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

Ответ 2

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

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

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

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

Static linking in Visual Studio 2013

Ответ 3

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

Ответ 4

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

Чтобы использовать инструмент v90 platform tools (= 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.