Поделиться через


Развертывание в Visual C++

Установка приложения на компьютере, отличном от вашего компьютера-разработчика, называется развертыванием. При развертывании приложения Visual C++ на другом компьютере нужно установить как само приложение, так и файлы всех библиотек, от которых оно зависит. Visual Studio предоставляет три способа развертывания библиотек Visual C++ вместе с приложением: централизованное развертывание, локальное развертывание и статическое связывание. Централизованное развертывание помещает файлы библиотеки в каталог Windows, где все приложения могут получать к ним доступ автоматически. При локальном развертывании файлы библиотек помещаются в тот же каталог, что и приложение. Вам нужно повторно развернуть все локально развернутые библиотеки, чтобы обновить их. Статическое связывание привязывает код библиотеки к приложению. Необходимо перекомпилировать и повторно развернуть приложение, чтобы воспользоваться всеми обновлениями библиотек при использовании статического связывания.

В Visual Studio 2015 библиотека времени выполнения C корпорации Майкрософт посредством рефакторинга была разделена на компоненты локальной библиотеки для конкретной версии и новую универсальную библиотеку среды выполнения C, которая теперь входит в состав Windows. Сведения о развертывании универсальной CRT см. в разделе Развертывание универсальной библиотеки CRT.

Централизованное развертывание

В центральном развертывании dll-файлы библиотеки устанавливаются в Windows\System32 каталоге или для 32-разрядных файлов библиотеки в системах x64, Windows\SysWow64 каталог. Централизованно развернутые файлы библиотеки доступны другим приложениям.

Для централизованного развертывания библиотек Visual C++ можно использовать один из двух источников устанавливаемых файлов:

  • Распространяемые файлы пакетов . Эти файлы представляют собой автономные исполняемые файлы командной строки, содержащие все библиотеки Распространяемый компонент Visual C++ в сжатой форме. Последние распространяемые пакеты доступны от Корпорации Майкрософт Распространяемый компонент Visual C++ последние поддерживаемые загрузки. При использовании распространяемых пакетов для центрального развертывания Обновл. Windows может самостоятельно обслуживать библиотеки.

  • Распространяемые модули слияния (.msm файлы), которые можно включить в файл установщика Windows (.msi) приложения. Этот метод не рекомендуется использовать, так как библиотеки, развернутые таким образом, не могут быть автоматически обновлены Обновл. Windows. Дополнительные сведения см. в разделе "Распространение с помощью модулей слияния".

Распространяемый файл пакета устанавливает все библиотеки Visual C++ для определенной системной архитектуры. Например, если приложение создано для x64, можно использовать vcredist_x64.exe пакет для установки всех библиотек Visual C++, используемых приложением. Перед установкой приложения вы можете запрограммировать установщик приложения для запуска пакета в качестве необходимых компонентов.

Централизованное развертывание с помощью распространяемого пакета позволяет Обновл. Windows автоматически обновлять библиотеки Visual C++. Для обеспечения непрерывной безопасности и функциональности рекомендуется использовать библиотеки DLL в приложении вместо статических библиотек, а использовать распространяемые пакеты и централизованное развертывание вместо локального развертывания.

Локальное развертывание

В локальном развертывании файлы библиотек устанавливаются в папку приложения вместе с исполняемым файлом. Разные версии библиотек Распространяемый компонент Visual C++ могут быть установлены в одной папке, так как имя файла каждой версии включает его номер версии. Например, версия 12 библиотеки среды выполнения C++ — msvcp120.dllэто версия 14 msvcp140.dll.

Расширения библиотеки могут распространяться по нескольким дополнительным библиотекам DLL, известным как dot librarys. Например, некоторые функции в стандартной библиотеке, выпущенной в Visual Studio 2017 версии 15.6, были добавлены msvcp140_1.dllдля сохранения совместимости msvcp140.dllABI. Если вы используете Visual Studio 2017 версии 15.6 (набор инструментов 14.13) или более поздней версии, вам может потребоваться локально развернуть обе эти точки библиотеки и основную библиотеку. Эти отдельные библиотеки точек в конечном итоге будут добавлены в базовую библиотеку при изменении ABI.

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

Статическое связывание

Наряду с библиотеками динамической компоновки Visual Studio предоставляет основную часть своих библиотек в виде статических библиотек. Вы можете статически связать статическую библиотеку с приложением, то есть связать объектный код библиотеки непосредственно с приложением. Статическое связывание создает один двоичный файл без зависимостей DLL, чтобы не нужно развертывать файлы библиотек Visual C++ отдельно. Однако мы не рекомендуем этот подход, так как статически связанные библиотеки не могут быть обновлены. Чтобы обновить связанную библиотеку при использовании статического связывания, необходимо перекомпилировать и повторно развернуть приложение.

Устранение неполадок развертывания

Порядок загрузки библиотек Visual C++ зависит от системы. Для диагностики проблем с загрузчиком используйте depends.exe или where.exe. Дополнительные сведения см. в порядке поиска библиотеки динамических ссылок (Windows).

См. также

Развертывание классических приложений
Развертывание универсальной библиотеки CRT