Эта проблема
Я использую Visual Studio 2012 для разработки C ++ DLL. На некоторых машинах эти DLL не могут быть загружены, потому что отсутствует набор инструментов платформы, для которого установлено значение «v110».
Я пытался установить старые версии C ++. Они не были установлены, потому что «более новая версия уже установлена». Я также установил текущий Windows SDK, но по-прежнему нет других элементов, кроме v110.
Вопрос
Как я могу скомпилировать мою C ++ DLL с более старой версией среды выполнения C ++, чтобы она работала на компьютерах, не являющихся разработчиками?
В соответствии с эта страница на MSDN, вам нужна соответствующая версия Visual Studio (2008 или 2010) или соответствующий Windows SDK для раскрывающегося списка «Набор инструментов платформы», чтобы отобразить эти версии:
Для изменения набора инструментов целевой платформы у вас должна быть установлена соответствующая версия Visual Studio или Windows Platform SDK.
Вы также, кажется, немного запутались между «Platform Toolset», который контролирует, какой компилятор / компоновщик / и т.д. используется для строить ваше приложение и «Visual C ++ Redistributable», который необходим для бежать ваше приложение. Вы не можете установить «Набор инструментов платформы» на ПК пользователя, и при этом вы не сможете сделать его доступным, установив конкретный «Распространяемый Visual C ++» на своем ПК для разработки.
Кроме того, насколько я знаю, распространяемый Visual C ++ не включает в себя среды выполнения MFC. Они доступны как отдельный модуль слияния MSI (MSM).
Я хотел бы поделиться некоторой информацией, с которой я столкнулся и выяснил, как использовать их в своих целях.
По-видимому, это хороший вариант для использования статических ссылок. Это не всегда работает для меня, но для моего меньшего проекта, это работает довольно хорошо. И результатом является DLL без каких-либо зависимостей, кроме kernel32.dll
и тому подобное.
Просто использовать /MT
для конфигурации выпуска и /MTd
для отладки, и вы будете в порядке.
Проблема в том, что такой разработчик, как я, получает текущую версию Visual Studio вскоре после ее выпуска, но вы не можете ожидать, что обычные пользователи будут иметь установленные среды выполнения, которым всего несколько недель. И установка разных версий Visual Studio только для того, чтобы использовать старую среду выполнения, определенно не то, что вам нужно.
Подсказка для интернет-архива. (Я не могу комментировать заявления выше, я не знаю почему)
Чтобы использовать Набор инструментов платформы 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.