Ermitteln der zu verteilenden DLLs

Beim Erstellen einer Anwendung, die von Visual Studio bereitgestellte Bibliotheks-DLLs verwendet, müssen Benutzer der Anwendung auch diese DLLs auf ihren Computern haben, damit die Anwendung ausgeführt werden kann. Da die meisten Benutzer wahrscheinlich keine Visual Studio installiert haben, müssen Sie diese DLLs für sie bereitstellen. Visual Studio stellt diese DLLs als Redistributable-Dateien zur Verfügung, die Sie in Ihr Anwendungsinstallationsprogramm einschließen können.

Um die Redistributable DLLs mit Ihrem Installationsprogramm einfacher einzuschließen, sind sie als eigenständige Redistributable-Pakete verfügbar. Diese Pakete sind architekturspezifische ausführbare Dateien, die die zentrale Bereitstellung verwenden, um die Redistributable-Dateien auf dem Computer eines Benutzers zu installieren. Installiert beispielsweise vc_redist.x86.exe die 32-Bit-Bibliotheken für x86- und x64-Computer, vc_redist.x64.exe installiert die 64-Bit-Bibliotheken für x64-Computer und vcredist.ARM64.exe installiert die Bibliotheken für ARM- und ARM64-Computer. Die zentrale Bereitstellung wird empfohlen, da Microsoft den Windows Update-Dienst verwenden kann, um diese Bibliotheken unabhängig zu aktualisieren. Zusätzlich zur Kopie in Ihrer Visual Studio-Installation stehen die aktuellen Redistributable-Pakete zum Download zur Verfügung. Links zu den neuesten unterstützten Redistributable-Paketen für aktuelle und ältere Toolsets finden Sie unter Die neuesten unterstützten Visual C++ Redistributable Downloads. Bestimmte frühere Versionen der Redistributable-Pakete können gefunden werden, indem Sie nach "Visual C++ Redistributable Pakete" suchenmy.visualstudio.com.

Um die Redistributable DLLs mit Ihrem Installationsprogramm einfacher einzuschließen, sind sie als eigenständige Redistributable-Pakete verfügbar. Diese Pakete sind architekturspezifische ausführbare Dateien, die die zentrale Bereitstellung verwenden, um die Redistributable-Dateien auf dem Computer eines Benutzers zu installieren. Installiert beispielsweise vcredist_x86.exe die 32-Bit-Bibliotheken für x86- und x64-Computer, vcredist_x64.exe installiert die 64-Bit-Bibliotheken für x64-Computer und vcredist_ARM.exe installiert die Bibliotheken für ARM-Computer. Die zentrale Bereitstellung wird empfohlen, da Microsoft den Windows Update-Dienst verwenden kann, um diese Bibliotheken unabhängig zu aktualisieren. Zusätzlich zur Kopie in Ihrer Visual Studio-Installation stehen die aktuellen Redistributable-Pakete zum Download zur Verfügung. Links zu den neuesten unterstützten Redistributable-Paketen für aktuelle und ältere Toolsets finden Sie unter Den neuesten unterstützten Visual C++-Downloads. Bestimmte frühere Versionen der Redistributable-Pakete können gefunden werden, indem Sie nach "Visual C++ Redistributable Pakete" suchenmy.visualstudio.com.

Wir unterstützen nur die Verwendung eines Redistributable-Pakets, das gleich oder neuer ist als Ihre Toolset-Version. Die Hauptversionsnummer des redistributable-Pakets, das Sie bereitstellen, müssen mit der Version des Visual Studio-Toolset übereinstimmen, das zum Erstellen Ihrer Anwendung verwendet wird, und die Nebenversion muss identisch oder höher sein. Visual Studio 2022, 2019, 2017 und 2015 verfügen alle über kompatible Toolsetversionsnummern. Für diese Versionen können alle neueren Visual Studio Redistributable-Dateien von Apps verwendet werden, die von einem Toolset aus einer älteren Version erstellt wurden. Beispielsweise kann Visual Studio 2022 Redistributable-Dateien von Apps verwendet werden, die mithilfe des Visual Studio 2017- oder 2015-Toolset erstellt wurden. Während sie möglicherweise kompatibel sind, unterstützen wir die Verwendung älterer Redistributable-Dateien in Apps, die mithilfe eines neueren Toolset erstellt wurden. Beispielsweise wird die Verwendung der 2017 Redistributable-Dateien in Apps, die mithilfe des Toolset 2019 erstellt wurden, nicht unterstützt.

Es ist auch möglich, die Redistributable DLLs mit Ihrem Installationsprogramm in Zusammenführungsmodule einzuschließen. Diese Methode ist jetzt veraltet, da Bibliotheken, die auf diese Weise bereitgestellt wurden, nicht automatisch von Windows Update aktualisiert werden können. Verteilbare Zusammenführungsmodule oder Microsoft Installer-Module (.msmDateien) sind optionale Komponenten im Visual Studio-Installer verfügbar. Bei der Installation finden Sie Zusammenführen von Modulen für die Redistributable DLLs in Ihrem Visual Studio-Installationsverzeichnis unter %VCToolsRedistDir%\MergeModules\. In Visual Studio 2015 und früheren Versionen von Visual Studio werden diese Dateien in Ihrem Verzeichnis "Programmdateien " oder " Programmdateien" (x86) in einem Common Files\Merge Modules Unterverzeichnis gefunden. Weitere Informationen zur Verwendung dieser Dateien finden Sie unter Redistributing-Komponenten mithilfe von Zusammenführungsmodulen.

Die einzelnen Redistributable DLLs sind auch in Ihrer Installation von Visual Studio enthalten. Standardmäßig werden sie in visual den %VCToolsRedistDir%\debug_nonredist\[architecture]\Microsoft.[toolset].[library] Ordnern installiert, in [architecture] denen die Zielarchitektur dargestellt wird, [toolset] die Toolsetversion darstellt und [library] die Debugbibliothek mit den Debug-DLLs ist.

Es ist auch möglich, die Redistributable DLLs mit Ihrem Installationsprogramm in Zusammenführungsmodule einzuschließen. Diese Methode ist jetzt veraltet, da Bibliotheken, die auf diese Weise bereitgestellt wurden, nicht automatisch von Windows Update aktualisiert werden können. Redistributable Merge Module für die Redistributable DLLs finden Sie in Ihrem Verzeichnis "Programmdateien " oder "Programmdateien" (x86) in einem Common Files\Merge Modules Unterverzeichnis. Weitere Informationen zur Verwendung dieser Dateien finden Sie unter Redistributing-Komponenten mithilfe von Zusammenführungsmodulen.

Die einzelnen Redistributable DLLs sind auch in Ihrer Installation von Visual Studio enthalten. Standardmäßig werden sie im Visual Studio 2015-Installationsverzeichnis in den Ordnern installiert, in [architecture] denen redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] die Zielarchitektur dargestellt wird, [toolset] die Toolsetversion darstellt und [library] die Debugbibliothek mit den Debug-DLLs ist.

Verwenden Sie die neueste Version einer Bibliotheks-DLL-Datei, eines Redistributable-Pakets oder eines Seriendruckmoduls, das in diesen Verzeichnissen gefunden wurde. Sie können diese Bibliotheken für die lokale Bereitstellung verwenden, indem Sie diese im selben Verzeichnis wie Ihre Anwendung installieren. Die lokale Bereitstellung wird nicht empfohlen, da Sie bei dieser selbst dafür verantwortlich sind, Updates für die bereitgestellte Anwendung zu liefern. Die zentrale Bereitstellung mithilfe der Redistributable-Pakete wird bevorzugt.

Um zu bestimmen, welche DLLs mit der Anwendung verteilt werden müssen, sammeln Sie eine Liste der DLLs, von denen die Anwendung abhängig ist. Diese DLLs werden normalerweise als Importbibliothekseingaben für den Linker aufgeführt. Bestimmte Bibliotheken wie „vcruntime“ und die universelle C-Laufzeitbibliothek (UCRT) sind standardmäßig enthalten. Wenn Ihre App oder eine ihrer Abhängigkeiten zum dynamischen Laden einer DLL verwendet LoadLibrary wird, wird diese DLL möglicherweise nicht in den Eingaben des Linkers aufgeführt. Eine Möglichkeit zum Sammeln der Liste dynamisch geladener DLLs besteht darin, Abhängigkeits-Walker (depends.exe) in Ihrer App auszuführen, wie in der Beschreibung der Abhängigkeiten einer Visual C++-Anwendung beschrieben. Dieses Tool ist leider veraltet und gibt möglicherweise die Meldung aus, dass bestimmte DLLs nicht gefunden werden können.

Wenn Sie über die Liste der Abhängigkeiten verfügen, vergleichen Sie sie mit der Liste, die in der Redist.txt Datei unter dem Microsoft Visual Studio-Installationsverzeichnis verknüpft ist. Oder auf die "REDIST-Liste" von Redistributable DLLs, auf die im Abschnitt "Verteilungsfähige Codedateien" der Microsoft Software-Lizenzbedingungen für Ihre Kopie von Visual Studio verwiesen wird. Informationen zu Visual Studio 2022 finden Sie unter Distributionable Code für Visual Studio 2022. Informationen zu Visual Studio 2019 finden Sie unter Distributionable Code für Visual Studio 2019. Für Visual Studio 2017 finden Sie weitere Informationen unter Verteilbarer Code für Microsoft Visual Studio 2017 (einschließlich Hilfsprogramme, Erweiterbarkeit und BuildServer-Dateien). Für Visual Studio 2015 finden Sie weitere Informationen unter Verteilbarer Code für Microsoft Visual Studio 2015 und Microsoft Visual Studio 2015 SDK (einschließlich Hilfsprogramme und BuildServer-Dateien). Für Visual Studio 2013 finden Sie die Liste online unter Verteilbarer Code für Microsoft Visual Studio 2013 und Microsoft Visual Studio 2013 SDK.

In Visual Studio-Versionen vor Visual Studio 2015 wurde die C-Runtime-Bibliothek (CRT) als Redistributable DLL msvc[version].dllin . In Visual Studio 2015 wurden die Funktionen im CRT in die vcruntime und die UCRT neu umgewandelt. Die UCRT ist jetzt eine Systemkomponente in Windows 10 und höher, die von Windows Update verwaltet wird. Es ist auf allen Windows 10 und späteren Betriebssystemen verfügbar. Wenn Sie Anwendungen für frühere Betriebssysteme bereitstellen möchten, müssen Sie die UCRT möglicherweise ebenfalls verteilen. Eine frühe Version der UCRT ist in den Visual Studio Redistributable-Dateien enthalten. Diese Version wird nur auf Betriebssystemen vor Windows 10 installiert, und nur, wenn keine Version der UCRT bereits installiert ist. Eine installierbare Version der UCRT für ältere Systeme finden Sie im Microsoft Download Center unter Windows 10 Universal C Runtime (Windows 10: Universelle C-Runtime) als Updatepaket für Microsoft-Systeme.

Sie können alle Dateien, die in Visual Studio enthalten sind, nicht neu verteilen. Sie dürfen nur die Dateien verteilen, die in Redist.txt oder der Onlineliste "REDIST" angegeben sind. Sie können auch keine Debugversionen Ihrer Anwendungen oder die Debugversionen von DLLs oder Bibliotheken von Microsoft bereitstellen. Sie können nur Debug-ausführbare Dateien und Bibliotheken auf Computer kopieren, die Sie zum Testen verwenden. Weitere Informationen finden Sie unter Auswählen einer Bereitstellungsmethode.

In der folgenden Tabelle werden einige der Visual C++-DLLs beschrieben, von denen Ihre Anwendung möglicherweise abhängig ist.

Visual C++-Bibliothek Beschreibung Gilt für:
vcruntime[version].dll Laufzeitbibliothek für nativen Code. Anwendungen, die die normalen C- und C++-Sprachdienste zum Starten und Beenden verwenden.
vccorlib[version].dll Laufzeitbibliothek für verwalteten Code. Anwendungen, die die C++-Sprachdienste für verwalteten Code verwenden.
msvcp[version].dll und msvcp[version_dotnumber].dll C++-Standardbibliothek für nativen Code. Anwendungen, die die C++-Standardbibliothek verwenden.
concrt[version].dll Concurrency Runtime-Bibliothek für nativen Code. Anwendungen, die Concurrency Runtime verwenden.
mfc[version].dll Microsoft Foundation Class-Bibliothek (MFC-Bibliothek). Anwendungen, die die MFC-Bibliothek verwenden.
mfc[version][language].dll Microsoft Foundation Classes-Bibliotheksressourcen (MFC). Anwendungen, die bestimmte Sprachressourcen für MFC verwenden.
mfc[version]u.dll MFC-Bibliothek mit Unicode-Unterstützung. Anwendungen, die die MFC-Bibliothek verwenden und Unicode-Unterstützung erfordern.
mfcmifc80.dll MFC-Bibliothek für verwaltete Schnittstellen. Anwendungen, die die MFC-Bibliothek mit Windows Forms-Steuerelementen verwenden.
mfcm[version].dll Verwaltete MFC-Bibliothek. Anwendungen, die die MFC-Bibliothek mit Windows Forms-Steuerelementen verwenden.
mfcm[version]u.dll Verwaltete MFC-Bibliothek mit Unicode-Unterstützung. Anwendungen, die die MFC-Bibliothek mit Windows Forms-Steuerelementen verwenden sowie Unicode-Unterstützung erfordern.
vcamp[version].dll AMP-Bibliothek für nativen Code. Anwendungen, die den Code der AMP-Bibliothek für C++ verwenden.
vcomp[version].dll OpenMP-Bibliothek für nativen Code. Anwendungen, die den Code der OpenMP-Bibliothek für C++ verwenden.

Hinweis

Sie müssen nicht mehr die Active Template Library als eine separate DLL weiterverteilen. Die Funktionalität wurde in Header und eine statische Bibliothek verschoben.

Weitere Informationen zum Neuverteilen dieser DLLs mit Ihrer Anwendung finden Sie unter Redistributing Visual C++-Dateien. Beispiele finden Sie unter Bereitstellungsbeispiele.

Normalerweise müssen Sie keine System-DLLs neu verteilen, da sie Teil des Betriebssystems sind. Allerdings gelten möglicherweise Ausnahmen, z. B., wenn die Anwendung auf mehreren Versionen von Microsoft-Betriebssystemen ausgeführt wird. In diesem Fall müssen Sie die entsprechenden Lizenzbedingungen lesen. Versuchen Sie außerdem, die System-DLLs entweder über Windows Update, Service Packs oder mithilfe von Redistributable-Paketen zu erhalten, die von Microsoft verfügbar gemacht wurden.

Weitere Informationen

Auswählen einer Bereitstellungsmethode
Bereitstellen von Desktopanwendungen