Распространяемые пакеты Microsoft Visual C++ Redistributable требуются довольного многим приложениям, но не всегда входят в пакет установки, вызывая ошибки типа "отсутствует MFC110.dll" или "MSVCP120.dll". К сожалению, не все понимают причину возникновения подобных ошибок, а следовательно правильные пути их устранения. В данной статье мы рассмотрим, что такое Распространяемые пакеты Microsoft Visual C++ Redistributable, для чего они нужны и как устранить связанные с ними ошибки.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Начнем с того, что это за пакеты и для чего нужны. Для этого нам придется немного окунуться в разработку ПО. При написании кода на C++ в среде Microsoft Windows разработчик может использовать уже готовые библиотеки, которые содержат наиболее часто используемые стандартные функции, либо отвечают за взаимодействие с системой. Эти библиотеки поставляются вместе со средой разработки и не включаются в готовое приложение. Это сделано для того, чтобы их можно было обновлять отдельно от приложения, а также избежать многократного дублирования одних и тех же файлов.
При этом они не входят в состав ОС по умолчанию, а входят в состав Распространяемых пакетов Microsoft Visual C++ Redistributable, которые обычно поставляются вместе с дистрибутивом ПО, но очень часто вы можете получить дистрибутив и без них. В этом случае при попытке запуска такого ПО вы получите ошибку об отсутствии одной или нескольких библиотек DLL.
К сожалению, сообщение об ошибке неинформативно и не способно подтолкнуть пользователя в правильном направлении. Самым худшим решением в этом случае будет поиск и скачивание необходимых библиотек с сомнительных ресурсов в сети интернет, поэтому давайте разбираться, как правильно интерпретировать подобные ошибки и устранять их.
Следует отметить, что не все подобные сообщения связаны с Microsoft Visual C++ Redistributable, поэтому сразу научимся отличать их. Полный список библиотек входящих в состав пакета приведен в документации:
Определение библиотек DLL для распространения
Отличительной их чертой является двух или трехзначный номер версии от 80 до 140 по шаблону:
mfc[version].dll
Если в сообщении об ошибке фигурирует подобная библиотека, то вы с высокой вероятностью имеете дело с Microsoft Visual C++ Redistributable. Для определения необходимой версии отбрасываем последнюю цифру и получаем номер версии. Ниже представлены номера версий и публичные наименования пакетов:
- Visual Studio 2005 (VC++ 8.0)
- Visual Studio 2008 (VC++ 9.0)
- Visual Studio 2010 (VC++ 10.0)
- Visual Studio 2012 (VC++ 11.0)
- Visual Studio 2013 (VC++ 12.0)
Таким образом MFC110.dll относится к пакету 2012 года, а MSVCP120.dll к пакету года 2013 и вам нужно скачать и установить Microsoft Visual C++ Redistributable 2012 и 2013 соответственно.
Версию пакета с внутренним номером 13 в Microsoft пропустили, и следующая версия 2015 года получила номер 14. Затем последовал еще ряд пакетов с номерами:
- Visual Studio 2015 (VC++ 14.0)
- Visual Studio 2017 (VC++ 15.0)
- Visual Studio 2019 (VC++ 16.0)
- Visual Studio 2022 (VC++ 17.0)
Но версии библиотек так и остались на уровне 14, точнее были введены подверсии 140, 141, 142 и 143, а сами библиотеки стали нумероваться в стиле 14.х, где x - номер подверсии. Например, Visual Studio 2019 версии 16.7 (версии файлов, начиная с 14.27), т.е. 142 подверсия. Еще более запутывает то, что имена библиотек остались прежними и MSVCP140.dll может указывать на любую из версии от 2015, до 2022.
Как быть в этой ситуации? К счастью, начиная с 2015 версии Microsoft реализовала обратную совместимость сверху вниз, т.е. приложение требующие 2015 версию пакета смогут прекрасно работать с 2022, но не наоборот. Поэтому сейчас распространяется единая версия пакета 2015-2022, которая содержит последние версии файлов.
Еще раз обратим ваше внимание, что несмотря на заголовок 2015-2022 вы устанавливаете последнюю версию библиотек, что видно из номера 14.36 (143 подверсия, 2022 пакет). Также вы можете столкнуться с отдельными пакетами для более старых версий, ниже показан пакет для 2017 выпуска.
Можно ли устанавливать такие пакеты? Можно, но следует понимать, что с такими версиями библиотек смогут работать только приложения требующие 2015 или 2017 выпуски распространяемого пакета, и не будут работать более новые.
Если ли смысл ставить последовательно все версии от 2015 до 2022? Нет, так как более новые библиотеки содержат все возможности более старых и установки последней версии будет достаточно.
Пакеты версий до 2015 обратной совместимости не имеют и вам нужно будет установить именно тот пакет, который требует установленное приложение.
Еще одна тонкость есть в 64-разрядных системах: разрядность распространяемого пакета Microsoft Visual C++ Redistributable должна соответствовать разрядности приложения, так если у вас требуются библиотеки для 32-разрядного приложения, то вам потребуется установить x86 версию, хотя система у вас x64.
Скачать все пакеты Microsoft Visual C++ Redistributable, начиная с 2005 можно на официальной странице:
Последние поддерживаемые загрузки Microsoft Visual C++ распространяемого компонента
Все распространяемые пакеты поддерживают параметры командной строки, к которым относятся:
- install - установка
- repair - восстановление
- uninstall - удаление
Дополнительные параметры позволяют влиять на процесс установки:
- passive - отображает ход установки, но не требует взаимодействия с пользователем
- quiet - не отображает пользовательский интерфейс и не требует взаимодействия с пользователем
- norestart - подавляет попытки перезагрузки после установки
Например, установить пакет, отображая ход установки без взаимодействия с пользователем и перезагрузки можно командой:
vc_redist.x64.exe /install /passive /norestart
Надеемся, что данная статья оказалась вам полезной и вы сможете осмысленно работать с Распространяемыми пакетами Microsoft Visual C++ Redistributable и грамотно устранять связанные с ними проблемы.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии