Определение библиотек 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%\debug_nonredist\[architecture]\Microsoft.[toolset].[library] , где [architecture] представляет целевую архитектуру, [toolset] представляет версию набора инструментов и [library] является библиотекой отладки, которая содержит отладочные библиотеки DLL.

Также можно включить распространяемые библиотеки 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. Или в списке REDIST распространяемых библиотек 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++ Описание Применяется к
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, пакетов обновления или с помощью распространяемых пакетов, доступных корпорацией Майкрософт.

См. также раздел

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