Redistribution du composant runtime C partagé dans Visual C++

Cet article explique comment redistribuer le composant runtime C partagé dans Visual C++.

Version d’origine du produit : Visual Studio, .NET Framework
Numéro de la base de connaissances d’origine : 326922

Résumé

Lorsque vous générez une application dans Microsoft Visual Studio et que l’application utilise les bibliothèques runtime C (CRT), distribuez la bibliothèque de liens dynamiques (DLL) CRT appropriée à partir de la liste suivante avec votre application :

  • Msvcr90.dll pour Microsoft Visual C++ 2008
  • Msvcr80.dll pour Microsoft Visual C++ 2005
  • Msvcr71.dll pour Microsoft Visual C++ .NET 2003 avec Microsoft .NET Framework 1.1
  • Msvcr70.dll pour Microsoft Visual C++ .NET 2002 avec Microsoft .NET Framework 1.0

Pour Msvcr70.dll ou pour Msvcr71.dll, vous devez installer la DLL CRT dans le répertoire des fichiers programme de votre application. Vous ne pouvez pas installer ces fichiers dans les répertoires système Windows. Pour Msvcr80.dll et pour Msvcr90.dll, vous devez installer le CRT en tant qu’assemblys Windows côte à côte.

Conflit de DLL

La DLL CRT partagée a été distribuée par Microsoft dans le passé en tant que composant de système partagé. Cela peut entraîner des problèmes lorsque vous exécutez des applications liées à une autre version du CRT sur des ordinateurs sur lesquels les versions correctes de la DLL CRT ne sont pas installées. Il est communément appelé problème de conflit de DLL .

Pour résoudre ce problème, la DLL CRT n’est plus considérée comme un fichier système. Par conséquent, la distribution de la DLL CRT avec n’importe quelle application qui s’en appuie. Comme il ne s’agit plus d’un composant système, installez-le dans le répertoire Program Files de vos applications avec un autre code spécifique à l’application. Cela empêche votre application d’utiliser d’autres versions de la bibliothèque CRT qui peuvent être installées sur les chemins d’accès système.

Visual C++ .NET 2003 ou Visual C++ .NET 2002 installe la DLL CRT dans le répertoire System32 sur un système de développement. Qui est installé par commodité pour le développeur. Sinon, tous les projets générés avec Visual C++ qui sont liés avec le CRT partagé nécessitent une copie de la DLL dans le répertoire de build pour le débogage et l’exécution. Visual C++ 2005 et Visual C++ 2008 installent la DLL CRT en tant qu’assembly côte à côte Windows sur les systèmes d’exploitation Windows XP et ultérieurs. Windows 2000 ne prend pas en charge les assemblys côte à côte. Sur Windows 2000, la DLL CRT est installée dans le répertoire System32.

Lorsque vous distribuez des applications qui nécessitent la bibliothèque CRT partagée dans la DLL CRT, nous vous recommandons d’utiliser le module de fusion CRT.msm, qui est inclus avec Visual C++ au lieu de distribuer directement le fichier DLL.

Assemblys côte à côte Windows

Msvcr80.dll avec Visual C++ 2005 et Msvcr90.dll avec Visual C++ 2008 sont redistribués en tant qu’assemblys côte à côte Windows, sauf sur Windows 2000. Vous pouvez installer ces versions du CRT sur les ordinateurs cibles en exécutant l’application Vcredist_x86.exe incluse dans Visual Studio. Il existe également des programmes d’installation pour les plateformes x64 et IA-64. Au lieu de cela, vous pouvez utiliser le module de fusion MSM CRT, fourni avec Visual Studio pour empaqueter le programme d’installation CRT dans votre propre application d’installation. Ce qui rend le CRT disponible en tant qu’assembly partagé pour toutes les applications, car il est installé dans le répertoire sur les \windows\winsxs systèmes d’exploitation pris en charge.

References