Redistribuir archivos de Visual C++

Actualización: noviembre 2007

Cuando se desarrolla una aplicación mediante Visual C++, se dispone de las ventajas de trabajar en un equipo que no solo es un excelente entorno de desarrollo, sino también un entorno ideal en el que ejecutar y probar las aplicaciones. Sin embargo, cuando se desea implementar la aplicación en otros equipos, se deben redistribuir todos los archivos necesarios para que sea compatible con el sistema operativo de destino. Para obtener más información sobre los archivos que es posible que desee redistribuir con la aplicación, vea Ejemplos de implementación y Determinar qué archivos DLL se redistribuirán.

Solo algunos archivos de Visual C++ se pueden redistribuir con la aplicación. Vea los Términos de licencia del software de Microsoft para Visual Studio 2005 y el archivo Redist.txt para comprobar qué archivos se pueden redistribuir con la aplicación. EULA.txt se encuentra en el directorio \Setup del primer CD de producto o en el DVD de Visual C++ 2008, mientras que Redist.txt se encuentra en el directorio Archivos de programa\Microsoft Visual Studio 2005 del segundo CD o el DVD.

Los archivos de Visual C++ pueden redistribuirse utilizando los módulos de combinación redistribuibles suministrados, utilizando Visual C++ Redistributable Package o implementando ensamblados específicos de Visual C++ como ensamblados privados en paralelo en la carpeta local de la aplicación.

Nota:

Una carpeta local de la aplicación es una carpeta que contiene un archivo ejecutable de aplicación. Los ensamblados privados en paralelo se deben implementar dentro de la carpeta local de la aplicación o en una de sus subcarpetas. Para obtener más información sobre las reglas de nomenclatura que se aplican a las subcarpetas que contienen ensamblados privados en paralelo, vea Secuencia de búsqueda de ensamblados.

En el primer caso, se tiene que incluir un módulo de combinación con un ensamblado de Visual C++ específico en un paquete de Windows Installer o en un paquete de instalación similar utilizado para implementar esta aplicación en otro equipo. Para obtener más información, vea Redistribuir mediante módulos de combinación. Dispone de un ejemplo de esta implementación en Cómo: Implementar un proyecto de instalación e implementación.

Visual C++ Redistributable Package (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) debe ejecutarse en el sistema de destino como un requisito previo a la instalación de la aplicación. Este paquete instala y registra todas las bibliotecas de Visual C++.

Nota:

Se recomienda utilizar este paquete para redistribuir las bibliotecas de Visual C++ para las aplicaciones generadas con Visual C++ Express y para los casos en que desee implementar todas las bibliotecas de Visual C++ al mismo tiempo.

Para obtener un ejemplo de cómo usar este paquete, vea Cómo: Implementar mediante XCopy.

Cuando implementa bibliotecas de Visual C++ como un ensamblado privado en paralelo, debe agregar a Windows Installer o a un paquete de instalación similar todos los archivos DLL y el archivo del manifiesto que forman este ensamblado. Estos archivos se deben implementar en el equipo de destino en un subdirectorio de la carpeta local de la aplicación, siguiendo las reglas de implementación de ensamblados privados. La información de los archivos DLL y de manifiesto de Visual C++ que forman parte de cada ensamblado de Visual C++ se puede encontrar en Visual C++ Libraries as Shared Side-by-Side Assemblies. Una descripción de las reglas que debe seguir al implementar ensamblados privados para cargar en tiempo de ejecución se puede encontrar en Secuencia de búsqueda de ensamblados. Para obtener un ejemplo de cómo implementar las bibliotecas de Visual C++ como un ensamblado privado, vea Cómo: Implementar mediante XCopy.

Posibles errores en tiempo de ejecución

Si hay un manifiesto presente en su aplicación pero no está instalada en la carpeta WinSxS una de las bibliotecas de Visual C++ necesarias, puede recibir uno de los siguientes mensajes de error, en función de la versión de Windows donde intente ejecutar la aplicación:

  • La aplicación no se puede inicializar correctamente (0xc0000135).

  • Error de inicio de la aplicación porque la configuración de la misma no es correcta. Si vuelve a instalar la aplicación puede que se corrijan los problemas.

  • El sistema no puede ejecutar el programa especificado.

Si no hay ningún manifiesto presente en la aplicación, el error que reciba dependerá de si la biblioteca de Visual C++ de la que depende la aplicación se implementa en la carpeta local de la aplicación o en una carpeta compartida, como la carpeta System o WinSxS.

Nota:

No se admite la redistribución de aplicaciones de C/C++ generadas sin un manifiesto. Las aplicaciones de C/C++ no pueden utilizar las bibliotecas de Visual C++ sin un manifiesto que enlace la aplicación a estas bibliotecas. Para obtener más información, vea Elegir un método de implementación.

Si es posible obtener acceso a un archivo DLL de la biblioteca de Visual C++ (por ejemplo, MSVCR90.DLL), ya esté instalado en la carpeta local de la aplicación o en la carpeta System, podría recibir el siguiente mensaje de error:

R6034 Una aplicación ha intentado cargar la biblioteca en tiempo de ejecución de C incorrectamente.

Si el archivo DLL es inalcanzable y Windows no puede cargarlo para la aplicación, puede aparecer el siguiente mensaje de error:

Error al iniciar la aplicación porque no se encontró MSVCR90.dll. La reinstalación de la aplicación puede solucionar el problema.

Para resolver estos errores, debe asegurarse de que la aplicación se genera correctamente y de que las bibliotecas de Visual C++ se implementan correctamente en el sistema de destino. Para identificar la causa principal de estos errores en tiempo de ejecución, siga los pasos que se describen en Solucionar problemas de aplicaciones aisladas y ensamblados simultáneos de C/C++.

En esta sección

Vea también

Conceptos

Ejemplos de implementación

Solucionar problemas de aplicaciones aisladas y ensamblados simultáneos de C/C++

Otros recursos

Implementación (C++)