Neuverteilung der freigegebenen C-Laufzeitkomponente in Visual C++

In diesem Artikel wird beschrieben, wie Sie die freigegebene C-Laufzeitkomponente in Visual C++ neu verteilen.

Ursprüngliche Produktversion: Visual Studio, .NET Framework
Ursprüngliche KB-Nummer: 326922

Zusammenfassung

Wenn Sie eine Anwendung in Microsoft Visual Studio erstellen und die Anwendung die C-Laufzeitbibliotheken (CRT) verwendet, verteilen Sie die entsprechende CRT-DLL (Dynamic Link Library) aus der folgenden Liste mit Ihrer Anwendung:

  • Msvcr90.dll für Microsoft Visual C++ 2008
  • Msvcr80.dll für Microsoft Visual C++ 2005
  • Msvcr71.dll für Microsoft Visual C++ .NET 2003 mit Microsoft .NET Framework 1.1
  • Msvcr70.dll für Microsoft Visual C++ .NET 2002 mit Microsoft .NET Framework 1.0

Für Msvcr70.dll oder für Msvcr71.dll sollten Sie die CRT-DLL im Verzeichnis der Anwendungsprogrammdateien installieren. Sie dürfen diese Dateien nicht in den Windows-Systemverzeichnissen installieren. Für Msvcr80.dll und für Msvcr90.dll sollten Sie die CRT als parallele Windows-Assemblys installieren.

DLL-Konflikt

Die freigegebene CRT-DLL wurde in der Vergangenheit von Microsoft als freigegebene Systemkomponente verteilt. Es kann Probleme verursachen, wenn Sie Anwendungen ausführen, die mit einer anderen Version der CRT auf Computern verknüpft sind, auf denen nicht die richtigen Versionen der CRT-DLL installiert sind. Es wird häufig als DLL-Konfliktproblem bezeichnet.

Um dieses Problem zu beheben, wird die CRT-DLL nicht mehr als Systemdatei betrachtet. Daher wird die CRT-DLL mit jeder Anwendung verteilt, die darauf basiert. Da es sich nicht mehr um eine Systemkomponente handelt, installieren Sie sie mit anderem anwendungsspezifischen Code im Programmverzeichnis Ihrer Anwendungen. Dadurch wird verhindert, dass Ihre Anwendung andere Versionen der CRT-Bibliothek verwendet, die möglicherweise in den Systempfaden installiert sind.

Visual C++ .NET 2003 oder Visual C++ .NET 2002 installiert die CRT-DLL im Verzeichnis System32 auf einem Entwicklungssystem. Dies ist als Benutzerfreundlichkeit für den Entwickler installiert. Andernfalls benötigen alle Mit Visual C++ erstellten Projekte, die mit der freigegebenen CRT verknüpft sind, eine Kopie der DLL im Buildverzeichnis für das Debuggen und die Ausführung. Visual C++ 2005 und Visual C++ 2008 installieren die CRT-DLL als parallele Windows-Assembly unter Windows XP und höheren Betriebssystemen. Windows 2000 unterstützt keine parallelen Assemblys. Unter Windows 2000 wird die CRT-DLL im Verzeichnis System32 installiert.

Wenn Sie Anwendungen verteilen, die die freigegebene CRT-Bibliothek in der CRT-DLL erfordern, empfiehlt es sich, das Mergemodul CRT.msm zu verwenden, das in Visual C++ enthalten ist, anstatt die DLL-Datei direkt zu verteilen.

Parallele Windows-Assemblys

Msvcr80.dll mit Visual C++ 2005 und Msvcr90.dll mit Visual C++ 2008 werden mit Ausnahme von Windows 2000 als parallele Windows-Assemblys verteilt. Sie können diese Versionen der CRT auf Zielcomputern installieren, indem Sie die Vcredist_x86.exe Anwendung ausführen, die in Visual Studio enthalten ist. Es gibt auch Installationsprogramme für die x64- und IA-64-Plattformen. Stattdessen können Sie das CRT msm-Mergemodul verwenden, das mit Visual Studio bereitgestellt wird, um das CRT-Installationsprogramm in Ihre eigene Setupanwendung zu packen. Dadurch wird die CRT als freigegebene Assembly für alle Anwendungen verfügbar, da sie unter unterstützten Betriebssystemen im \windows\winsxs Verzeichnis installiert ist.

References