Распространение общего компонента среды выполнения C в Visual C++

В этой статье описывается распространение общего компонента среды выполнения C в Visual C++.

Исходная версия продукта: Visual Studio, платформа .NET Framework
Исходный номер базы знаний: 326922

Итоги

При создании приложения в Microsoft Visual Studio, если приложение использует библиотеки времени выполнения C (CRT), необходимо распространить соответствующий CRT DLL из следующего списка вместе с приложением.

  • Msvcr90.dll для Microsoft Visual C++ 2008
  • Msvcr80.dll для Microsoft Visual C++ 2005
  • Msvcr71.dll для Microsoft Visual C++ .NET 2003 с Microsoft .NET Framework 1.1
  • Msvcr70.dll для Microsoft Visual C++ .NET 2002 с Microsoft .NET Framework 1.0

Для Msvcr70.dll или для Msvcr71.dll следует установить библиотеку DLL CRT в каталог файлов программы приложения. Эти файлы могут не устанавливаться в системные каталоги Windows. Для Msvcr80.dll и Msvcr90.dll следует устанавливать CRT в виде параллельных сборок Windows.

Конфликт DLL

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

Чтобы устранить эту проблему, DLL CRT больше не считается системным файлом, следовательно, распространяется с любым приложением, которое на неё опирается. Так как он больше не является системным компонентом, установите его в каталог program Files приложений с другим кодом для конкретного приложения. Это препятствует использованию вашим приложением других версий библиотеки CRT, которые могут быть установлены в системных путях.

Visual C++ .NET 2003 или Visual C++ .NET 2002 устанавливает библиотеку DLL CRT в каталоге System32 в системе разработки. Установлено для удобства разработчика. В противном случае для отладки и выполнения всех проектов, созданных с помощью Visual C++, которые связаны с общим CRT, требуется копия библиотеки DLL в каталоге сборки. Visual C++ 2005 и Visual C++ 2008 устанавливают библиотеку DLL CRT в виде параллельной сборки Windows в Windows XP и более поздних операционных системах. Windows 2000 не поддерживает параллельные сборки. В Windows 2000 библиотека DLL CRT устанавливается в каталог System32.

При распространении приложений, требующих общей библиотеки CRT в библиотеке DLL CRT, рекомендуется использовать модуль слияния CRT.msm, который входит в состав Visual C++ вместо прямого распространения DLL-файла.

Параллельные сборки Windows

Msvcr80.dll с Visual C++ 2005 и Msvcr90.dll с Visual C++ 2008 распространяются как параллельные сборки Windows, кроме Windows 2000. Эти версии CRT можно установить на целевых компьютерах, выполнив приложение Vcredist_x86.exe, которое входит в состав Visual Studio. Также существуют установщики для платформ x64 и IA-64. Вместо этого можно использовать модуль слияния CRT msm, который поставляется с Visual Studio для упаковки установщика CRT в собственное приложение установки. Что сделает CRT доступным как общую сборку для всех приложений, так как она установлена в каталоге \windows\winsxs в поддерживаемых операционных системах.

Ссылки