Redistribución del componente en tiempo de ejecución de C compartido en Visual C++

En este artículo se describe cómo redistribuir el componente en tiempo de ejecución de C compartido en Visual C++.

Versión original del producto: Visual Studio, .NET Framework
Número de KB original: 326922

Resumen

Al compilar una aplicación en Microsoft Visual Studio y la aplicación usa las bibliotecas en tiempo de ejecución (CRT) de C, distribuya la biblioteca de vínculos dinámicos (DLL) de CRT adecuada de la lista siguiente con la aplicación:

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

Para Msvcr70.dll o para Msvcr71.dll, debe instalar el archivo DLL de CRT en el directorio de archivos de programa de la aplicación. No puede instalar estos archivos en los directorios del sistema de Windows. Para Msvcr80.dll y para Msvcr90.dll, debe instalar CRT como ensamblados en paralelo de Windows.

Conflicto de DLL

Microsoft ha distribuido la DLL de CRT compartida en el pasado como un componente del sistema compartido. Puede causar problemas al ejecutar aplicaciones vinculadas a una versión diferente de CRT en equipos que no tienen instaladas las versiones correctas de la DLL de CRT. Normalmente se conoce como el problema de conflicto de DLL .

Para solucionar este problema, el archivo DLL de CRT ya no se considera un archivo del sistema, por lo que se distribuye el archivo DLL de CRT con cualquier aplicación que se base en él. Dado que ya no es un componente del sistema, instálelo en el directorio Archivos de programa de aplicaciones con otro código específico de la aplicación. Lo que impide que la aplicación use otras versiones de la biblioteca crt que se pueden instalar en las rutas de acceso del sistema.

Visual C++ .NET 2003 o Visual C++ .NET 2002 instala la DLL de CRT en el directorio System32 en un sistema de desarrollo. Que se instala como una comodidad para el desarrollador. De lo contrario, todos los proyectos que se compilan con Visual C++ que se vinculan a CRT compartido requieren una copia del archivo DLL en el directorio de compilación para la depuración y ejecución. Visual C++ 2005 y Visual C++ 2008 instalan la DLL de CRT como un ensamblado en paralelo de Windows en Windows XP y sistemas operativos posteriores. Windows 2000 no admite ensamblados en paralelo. En Windows 2000, el archivo DLL de CRT se instala en el directorio System32.

Al distribuir aplicaciones que requieren la biblioteca CRT compartida en la DLL de CRT, se recomienda usar el módulo de combinación CRT.msm, que se incluye con Visual C++ en lugar de distribuir directamente el archivo DLL.

Ensamblados en paralelo de Windows

Msvcr80.dll con Visual C++ 2005 y Msvcr90.dll con Visual C++ 2008 se redistribuye como ensamblados en paralelo de Windows, excepto en Windows 2000. Puede instalar estas versiones de CRT en equipos de destino ejecutando la aplicación Vcredist_x86.exe que se incluye con Visual Studio. También hay instaladores para las plataformas x64 e IA-64. En su lugar, puede usar el módulo de combinación msm de CRT, que se proporciona con Visual Studio para empaquetar el instalador de CRT en su propia aplicación de instalación. Lo que hará que CRT esté disponible como ensamblado compartido para todas las aplicaciones porque está instalado en el \windows\winsxs directorio en sistemas operativos compatibles.

Referencias