Определение библиотек DLL для распространения

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

Чтобы упростить включение распространяемых библиотек DLL в установщик, они доступны как автономные распространяемые пакеты. Эти пакеты представляют собой исполняемые файлы, относящиеся к архитектуре, которые используют централизованное развертывание для установки распространяемых файлов на компьютере пользователя. Например, vc_redist.x86.exe устанавливает 32-разрядные библиотеки для компьютеров x86 и x64, vc_redist.x64.exe устанавливает 64-разрядные библиотеки для компьютеров x64 и vcredist.ARM64.exe устанавливает библиотеки для компьютеров ARM и ARM64. Рекомендуется использовать центральное развертывание, так как корпорация Майкрософт может использовать службу Центра обновления Windows для обновления этих библиотек независимо друг от друга. Помимо копирования в установке Visual Studio, для скачивания доступны текущие распространяемые пакеты. Ссылки на последние поддерживаемые распространяемые пакеты для текущих и старых наборов инструментов см. в статье "Последние поддерживаемые Распространяемый компонент Visual C++ загрузки". Определенные более ранние версии распространяемых пакетов можно найти, выполнив поиск my.visualstudio.com по запросу "пакеты Распространяемый компонент Visual C++".

Чтобы упростить включение распространяемых библиотек DLL в установщик, они доступны как автономные распространяемые пакеты. Эти пакеты представляют собой исполняемые файлы, относящиеся к архитектуре, которые используют централизованное развертывание для установки распространяемых файлов на компьютере пользователя. Например, vcredist_x86.exe устанавливает 32-разрядные библиотеки для компьютеров x86 и x64, vcredist_x64.exe устанавливает 64-разрядные библиотеки для компьютеров x64 и vcredist_ARM.exe устанавливает библиотеки для компьютеров ARM. Рекомендуется использовать центральное развертывание, так как корпорация Майкрософт может использовать службу Центра обновления Windows для обновления этих библиотек независимо друг от друга. Помимо копирования в установке Visual Studio, для скачивания доступны текущие распространяемые пакеты. Ссылки на последние поддерживаемые распространяемые пакеты для текущих и старых наборов инструментов см. в статье "Последние поддерживаемые загрузки Visual C++". Определенные более ранние версии распространяемых пакетов можно найти, выполнив поиск my.visualstudio.com по запросу "пакеты Распространяемый компонент Visual C++".

Мы поддерживаем только распространяемый пакет, который совпадает с версией набора инструментов или более поздней. Основной номер версии распространяемого пакета, который вы развертываете, должен соответствовать версии набора инструментов Visual Studio, используемого для создания приложения, и дополнительная версия должна быть той же или более поздней. Visual Studio 2022, 2019, 2017 и 2015 имеют совместимые номера версий набора инструментов. Для этих версий все новые распространяемые файлы Visual Studio могут использоваться приложениями, созданными набором инструментов из более старой версии. Например, распространяемые файлы Visual Studio 2022 могут использоваться приложениями, созданными с помощью набора инструментов Visual Studio 2017 или 2015. Хотя они могут быть совместимы, мы не поддерживаем использование старых распространяемых файлов в приложениях, созданных с помощью нового набора инструментов. Например, использование распространяемых файлов 2017 в приложениях, созданных с помощью набора инструментов 2019 года, не поддерживается.

Также можно включить распространяемые библиотеки DLL в установщик в модули слияния. Этот метод теперь устарел, так как библиотеки, развернутые таким образом, не могут быть автоматически обновлены Обновл. Windows. Распространяемые модули слияния или модули установщика Майкрософт (.msm файлы) — это необязательные компоненты, доступные в Visual Studio Installer. При установке модули слияния для распространяемых библиотек DLL находятся в каталоге установки Visual Studio в разделе %VCToolsRedistDir%\MergeModules\. В Visual Studio 2015 и более ранних версиях Visual Studio эти файлы находятся в каталоге Program Files или Program Files (x86) в подкаталоге Common Files\Merge Modules . Дополнительные сведения об использовании этих файлов см. в разделе "Распространение компонентов с помощью модулей слияния".

Отдельные распространяемые библиотеки DLL также включаются в установку Visual Studio. По умолчанию они устанавливаются в папках Visual %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] , где [architecture] представляет целевую архитектуру, [toolset] представляет версию набора инструментов и [library] представляет библиотеку.

Также можно включить распространяемые библиотеки DLL в установщик в модули слияния. Этот метод теперь устарел, так как библиотеки, развернутые таким образом, не могут быть автоматически обновлены Обновл. Windows. Распространяемые модули слияния для распространяемых библиотек DLL находятся в каталоге Program Files или Program Files (x86) в подкаталоге Common Files\Merge Modules . Дополнительные сведения об использовании этих файлов см. в разделе "Распространение компонентов с помощью модулей слияния".

Отдельные распространяемые библиотеки DLL также включаются в установку Visual Studio. По умолчанию они устанавливаются в каталог установки Visual Studio 2015 в redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] папках, где [architecture] представляет целевую архитектуру, [toolset] представляет версию набора инструментов и [library] является библиотекой отладки, которая содержит библиотеку DLL отладки.

Используйте последнюю версию любого DLL-файла библиотеки, распространяемого пакета или модуля слияния, найденного в этих каталогах. Вы можете использовать эти библиотеки для локального развертывания, установив их в одном каталоге с приложением. Мы не рекомендуем локальное развертывание, так как тогда вам потребуется самостоятельно получать обновления для развернутых приложений. Централизованное развертывание с помощью распространяемых пакетов предпочтительнее.

Чтобы определить, какие библиотеки DLL необходимо повторно распространить вместе с приложением, составьте список библиотек DLL, от которых зависит приложение. Эти библиотеки DLL обычно перечислены как входные данные библиотеки импорта компоновщика. Некоторые библиотеки, такие как vcruntime и универсальная библиотека времени выполнения языка C (UCRT), включаются по умолчанию. Если приложение или одна из его зависимостей используется LoadLibrary для динамической загрузки библиотеки DLL, эта библиотека DLL может не быть указана во входных данных компоновщика. Одним из способов сбора списка динамически загруженных библиотек DLL является запуск walkency Walker (depends.exe) в приложении, как описано в разделе "Основные сведения о зависимостях приложения Visual C++". К сожалению, это средство устарело и может сообщить о том, что не удается найти некоторые библиотеки DLL.

Если у вас есть список зависимостей, сравните его со списком, связанным в файле, который находится в Redist.txt каталоге установки Microsoft Visual Studio. Или в списке распространяемых библиотек DLL, на которые ссылается раздел "Распространяемые файлы кода" условий лицензионного соглашения Майкрософт для копии Visual Studio. Сведения о Visual Studio 2022 см. в разделе "Распространяемый код" для Visual Studio 2022. Сведения о Visual Studio 2019 см. в разделе "Распространяемый код" для Visual Studio 2019. Для Visual Studio 2017 см. раздел Распространяемый код для Microsoft Visual Studio 2017 (включает служебные программы, возможности расширяемости и файлы BuildServer). Для Visual Studio 2015 см. раздел Распространяемый код для Microsoft Visual Studio 2015 и пакета SDK для Microsoft Visual Studio 2015 (включает служебные программы и файлы BuildServer). Для Visual Studio 2013 этот список можно найти в разделе Распространяемый код для Microsoft Visual Studio 2013 и Microsoft Visual Studio 2013 SDK.

В версиях Visual Studio до Visual Studio 2015 библиотека среды выполнения C (CRT) была включена в состав распространяемой библиотеки DLL msvc[version].dll. В Visual Studio 2015 функции в CRT были рефакторингованы в vcruntime и UCRT. UCRT теперь является системным компонентом в Windows 10 и более поздних версиях, управляемым Обновл. Windows. Она доступна во всех операционных системах Windows 10 и более поздних версий. Для развертывания приложения в более ранних операционных системах может потребоваться распространить и UCRT. Ранняя версия UCRT включена в распространяемые файлы Visual Studio. Эта версия установлена только в операционных системах, предшествующих Windows 10, и только если версия UCRT уже установлена. Сведения об устанавливаемой версии UCRT для систем прежних версий в виде пакета обновления системы Майкрософт см. в разделе Универсальная среда выполнения C Windows 10 в Центре загрузки Майкрософт.

Невозможно распространить все файлы, включенные в Visual Studio. Разрешено распространять только те файлы, которые указаны в Redist.txt списке REDIST или в интернете. Вы также не можете распространять отладочные версии приложений или отладочные версии библиотек dll или библиотек, предоставляемых корпорацией Майкрософт. Вы можете копировать только исполняемые файлы отладки и библиотеки на компьютеры, используемые для тестирования. Дополнительные сведения см. в разделе "Выбор метода развертывания".

В следующей таблице описываются некоторые библиотеки DLL Visual C++, от которых может зависеть ваше приложение.

Библиотека Visual C++ Description Применяется к
vcruntime[version].dll Библиотека среды выполнения для машинного кода. Приложения, использующие обычные службы запуска и завершения работы для языка C и C++.
vccorlib[version].dll Библиотека среды выполнения для управляемого кода. Приложения, использующие службы языка C++ для управляемого кода.
msvcp[version].dll и msvcp[version_dotnumber].dll. Стандартная библиотека C++ для машинного кода. Приложения, использующие стандартную библиотеку C++.
concrt[version].dll Библиотека среды выполнения с параллелизмом для машинного кода. Приложения, использующие среду выполнения с параллелизмом.
mfc[version].dll Библиотека Microsoft Foundation Class (MFC). Приложения, использующие библиотеку MFC.
mfc[version][language].dll Ресурсы библиотеки Microsoft Foundation Classes (MFC). Приложения, использующие определенные языковые ресурсы для MFC.
mfc[version]u.dll Библиотека MFC с поддержкой Юникода. Приложения, использующие библиотеку MFC и требующие поддержку Юникода.
mfcmifc80.dll Библиотека управляемых интерфейсов MFC. Приложения, использующие библиотеку MFC с элементами управления Windows Forms.
mfcm[version].dll Управляемая библиотека MFC. Приложения, использующие библиотеку MFC с элементами управления Windows Forms.
mfcm[version]u.dll Управляемая библиотека MFC с поддержкой Юникода. Приложения, использующие библиотеку MFC с элементами управления Windows Forms и требующие поддержку Юникода.
vcamp[version].dll Библиотека AMP для машинного кода. Приложения, использующие код библиотеки C++ AMP.
vcomp[version].dll Библиотека OpenMP для машинного кода. Приложения, использующие код библиотеки C++ AMP.

Примечание.

Библиотеку шаблонных классов ATL больше не требуется повторно распространять в качестве отдельного DLL-файла. Ее функции были переданы заголовкам и статической библиотеке.

Дополнительные сведения о том, как распространять эти библиотеки DLL с помощью приложения, см. в разделе "Распространение файлов Visual C++". Примеры см . в примерах развертывания.

Как правило, вам не нужно распространять библиотеки DLL системы, так как они являются частью операционной системы. Однако возможны исключения, например если приложение выполняется в нескольких версиях операционных систем Microsoft. В этом случае необходимо внимательно ознакомиться с соответствующими условиями лицензирования. Кроме того, попробуйте обновить системные библиотеки DLL с помощью Обновл. Windows, пакетов обновления или с помощью распространяемых пакетов, доступных корпорацией Майкрософт.

См. также

Выбор метода развертывания
Развертывание классических приложений