Compartir a través de


Implementación en Visual C++

La instalación de la aplicación en un equipo que no sea el equipo de desarrollo se conoce como implementación. Al implementar una aplicación de Visual C++ en otro equipo, debe instalar tanto la aplicación como todos los archivos de biblioteca de los que dependa. Visual Studio ofrece tres maneras de implementar las bibliotecas de Visual C++ junto con la aplicación: implementación central, implementación local y vinculación estática. La implementación central coloca los archivos de biblioteca en el directorio de Windows, donde todas las aplicaciones pueden acceder a ellos automáticamente. La implementación local coloca los archivos de biblioteca en el mismo directorio que la aplicación. Debe volver a implementar las bibliotecas implementadas localmente para actualizarlas. La vinculación estática enlaza el código de biblioteca en la aplicación. Debe volver a compilar e implementar la aplicación para aprovechar las ventajas de las actualizaciones de las bibliotecas cuando se usa la vinculación estática.

En Visual Studio 2015, la biblioteca en tiempo de ejecución de C de Microsoft se refactorizó en componentes de biblioteca locales específicos de la versión, y ahora una nueva biblioteca de tiempo de ejecución de C Universal forma parte de Windows. Para obtener más información sobre la implementación de CRT Universal, vea Implementación de CRT Universal.

Implementación central

En la implementación central, los archivos DLL de biblioteca se instalan en el directorio Windows\System32, o en el caso de los archivos de biblioteca de 32 bits de sistemas x64, en el directorio Windows\SysWow64. Hay archivos de biblioteca implementados centralmente disponibles para otras aplicaciones.

Para implementar de forma centralizada las bibliotecas de Visual C++, puede usar uno de estos dos orígenes para los archivos de instalación:

  • Archivos de paquete redistribuible. Son archivos ejecutables autónomos de línea de comandos que contienen todas las bibliotecas de Visual C++ Redistributable en formato comprimido. Los paquetes redistribuibles más recientes están disponibles en las Descargas de las versiones más recientes admitidas de Microsoft Visual C++ Redistributable. Al usar los paquetes redistribuibles para la implementación central, Windows Update puede atender a las bibliotecas de forma independiente.

  • Módulos de combinación redistribuibles (archivos .msm), que se pueden incluir en el archivo de Windows Installer (.msi) de la aplicación .msi. Este método está en desuso porque las bibliotecas implementadas de esta manera no se pueden actualizar de forma automática mediante Windows Update. Para obtener más información, consulte Redistribución mediante módulos de combinación.

Un archivo de paquete redistribuible instala todas las bibliotecas de Visual C++ de una arquitectura del sistema concreta. Por ejemplo, si la aplicación se compila para x64, se puede usar el paquete vcredist_x64.exe para instalar todas las bibliotecas de Visual C++ que usa la aplicación. Se puede programar el instalador de la aplicación para que ejecute el paquete redistribuible como un requisito previo antes de instalar la aplicación.

La implementación central mediante un paquete redistribuible permite que Windows Update actualice automáticamente las bibliotecas de Visual C++. Para la seguridad y la funcionalidad continuadas, se recomienda usar los archivos DLL de biblioteca en la aplicación en lugar de bibliotecas estáticas y usar paquetes redistribuibles y la implementación central en lugar de la implementación local.

Implementación local

En la implementación local, los archivos de biblioteca se instalan en la carpeta de la aplicación junto con el archivo ejecutable. Se pueden instalar otras versiones de las bibliotecas de Visual C++ Redistributable en la misma carpeta porque el nombre de archivo de cada versión incluye su número de versión. Por ejemplo, la versión 12 de la biblioteca en tiempo de ejecución de C++ es msvcp120.dll y la versión 14 es msvcp140.dll.

Las expansiones a una biblioteca se pueden distribuir entre varios archivos DLL adicionales, conocidos como bibliotecas DOT. Por ejemplo, algunas funciones de la biblioteca estándar que se publicó en la versión 15.6 de Visual Studio 2017 se agregaron a msvcp140_1.dll, para conservar la compatibilidad con ABI de msvcp140.dll. Si usa Visual Studio 2017, versión 15.6 (conjunto de herramientas 14.13) o un conjunto de herramientas posterior, es posible que tenga que implementar localmente estas bibliotecas DOT, así como la biblioteca principal. Estas otras bibliotecas DOT se agregarán finalmente a la biblioteca base, cuando la ABI cambie.

Como Microsoft no puede actualizar automáticamente las bibliotecas de Visual C++ implementadas localmente, no se recomienda la implementación local de estas bibliotecas. Si decide usar la implementación local de bibliotecas redistribuibles, se recomienda que implemente su propio método de actualizar automáticamente las bibliotecas implementadas localmente.

Vinculación estática

Además de las bibliotecas vinculadas dinámicamente, Visual Studio proporciona la mayor parte de sus bibliotecas como bibliotecas estáticas. Una biblioteca estática se puede vincular de manera estática a la aplicación, es decir, vincular el código de objeto de biblioteca directamente en la aplicación. La vinculación estática crea un archivo binario único sin una dependencia DLL, por lo que no es necesario implementar por separado los archivos de biblioteca de Visual C++. Sin embargo, este enfoque no se recomienda porque las bibliotecas vinculadas estáticamente no se pueden actualizar en contexto. Para actualizar una biblioteca vinculada al usar la vinculación estática, tiene que recompilar y volver a implementar la aplicación.

Solución de problemas de implementación

El orden de carga de las bibliotecas de Visual C++ depende del sistema. Para diagnosticar los problemas de cargador, use depends.exe o where.exe. Para más información, consulte Orden de búsqueda de las bibliotecas de vínculo dinámico (Windows).

Consulte también

Implementar aplicaciones de escritorio nativas
Implementación de CRT universal