Determinar qué archivos DLL se redistribuirán

Al compilar una aplicación que usa los archivos DLL de biblioteca proporcionados por Visual Studio, los usuarios de la aplicación también deben tener esos archivos DLL en sus equipos para ejecutar la aplicación. Dado que es probable que la mayoría de los usuarios no tengan instalado Visual Studio, debe proporcionarles estos archivos DLL. Visual Studio ofrece estos archivos DLL como archivos Redistributable que se pueden incluir en el instalador de la aplicación.

Para que resulte más fácil incluir los archivos DLL Redistributable con el instalador, también están disponibles como paquetes Redistributable independientes. Estos paquetes son archivos ejecutables específicos de la arquitectura que usan la implementación central para instalar los archivos Redistributable en el equipo del usuario. Por ejemplo, vc_redist.x86.exe instala las bibliotecas de 32 bits para equipos x86 y x64, vc_redist.x64.exe instala las bibliotecas de 64 bits para equipos x64 y vcredist.ARM64.exe instala las bibliotecas para equipos ARM y ARM64. Se recomienda la implementación central para que Microsoft pueda usar el servicio Windows Update para actualizar estas bibliotecas de forma independiente. Además de la copia en la instalación de Visual Studio, los paquetes Redistributable actuales están disponibles para la descarga. Para obtener vínculos a los paquetes Redistributable compatibles más recientes para los conjuntos de herramientas actuales y anteriores, vea Últimas descargas de Visual C++ Redistributable compatibles. Se pueden encontrar versiones anteriores específicas de los paquetes Redistributable si se busca "Paquetes de Visual C++ Redistributable" en my.visualstudio.com.

Para que resulte más fácil incluir los archivos DLL Redistributable con el instalador, también están disponibles como paquetes Redistributable independientes. Estos paquetes son archivos ejecutables específicos de la arquitectura que usan la implementación central para instalar los archivos Redistributable en el equipo del usuario. Por ejemplo, vcredist_x86.exe instala las bibliotecas de 32 bits para equipos x86 y x64, vcredist_x64.exe instala las bibliotecas de 64 bits para equipos x64 y vcredist_ARM.exe instala las bibliotecas para equipos ARM. Se recomienda la implementación central para que Microsoft pueda usar el servicio Windows Update para actualizar estas bibliotecas de forma independiente. Además de la copia en la instalación de Visual Studio, los paquetes Redistributable actuales están disponibles para la descarga. Para obtener vínculos a los paquetes Redistributable compatibles más recientes para los conjuntos de herramientas actuales y anteriores, vea Últimas descargas de Visual C++ Redistributable compatibles. Se pueden encontrar versiones anteriores específicas de los paquetes Redistributable si se busca "Paquetes de Visual C++ Redistributable" en my.visualstudio.com.

Solo se admite el uso de un paquete Redistributable que sea igual o más reciente que la versión del conjunto de herramientas. El número de versión principal del paquete Redistributable que se implemente debe coincidir con la versión del conjunto de herramientas de Visual Studio que se use para crear la aplicación, y el número de versión secundaria debe ser el mismo o superior. Visual Studio 2022, 2019, 2017 y 2015, todos ellos tienen números de versión del conjunto de herramientas compatibles. Para estas versiones, las aplicaciones creadas por un conjunto de herramientas de una versión anterior pueden usar cualquier archivo Redistributable de Visual Studio más reciente. Por ejemplo, los archivos Redistributable de Visual Studio 2022 se pueden usar en aplicaciones creadas mediante el conjunto de herramientas de Visual Studio 2017 o 2015. Aunque pueden ser compatibles, no se admite el uso de archivos Redistributable más antiguos en aplicaciones creadas mediante un conjunto de herramientas más reciente. Por ejemplo, no se admite el uso de los archivos Redistributable de 2017 en aplicaciones creadas mediante el conjunto de herramientas de 2019.

También es posible incluir los archivos DLL Redistributable con el instalador en módulos de combinación. Este método está ahora en desuso porque Windows Update no puede actualizar de forma automática las bibliotecas implementadas de esta manera. Los módulos de combinación Redistributable o los módulos de Microsoft Installer (archivos .msm) son componentes opcionales disponibles en el Instalador de Visual Studio. Al instalarlos, los módulos de combinación para los archivos DLL Redistributable se encuentran en el directorio de instalación de Visual Studio en %VCToolsRedistDir%\MergeModules\. En Visual Studio 2015 y versiones anteriores, estos archivos se encuentran en el directorio Archivos de programa o Archivos de programa (x86) en un subdirectorio Common Files\Merge Modules. Para más información sobre el uso de estos archivos, vea Redistribuir componentes mediante módulos de combinación.

Los archivos DLL Redistributable individuales también se incluyen en la instalación de Visual Studio. De forma predeterminada, se instalan en el objeto Visual las %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] carpetas, donde [architecture] representa la arquitectura de destino, [toolset] representa la versión del conjunto de herramientas y [library] representa la biblioteca.

También es posible incluir los archivos DLL Redistributable con el instalador en módulos de combinación. Este método está ahora en desuso porque Windows Update no puede actualizar de forma automática las bibliotecas implementadas de esta manera. Los módulos de combinación Redistributable para los archivos DLL Redistributable se encuentran en el directorio Archivos de programa o Archivos de programa (x86) en un subdirectorio Common Files\Merge Modules. Para más información sobre el uso de estos archivos, vea Redistribuir componentes mediante módulos de combinación.

Los archivos DLL Redistributable individuales también se incluyen en la instalación de Visual Studio. De forma predeterminada, se instalan en el directorio de instalación de Visual Studio 2015 en las carpetas redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library], donde [architecture] representa la arquitectura de destino, [toolset] la versión del conjunto de herramientas y [library] es la Biblioteca de depuración que tiene los archivos DLL de depuración.

Use la versión más reciente de cualquier archivo DLL de biblioteca, paquete Redistributable o módulo de combinación que se encuentran en estos directorios. Puede usar estas bibliotecas para la implementación local, mediante su instalación en el mismo directorio que la aplicación. No se recomienda la implementación local ya que le hace responsable de entregar actualizaciones de las aplicaciones implementadas. Es preferible la implementación central mediante los paquetes Redistributable.

Para determinar qué archivos DLL se tienen que redistribuir con la aplicación, recopile una lista de archivos DLL de los que depende la aplicación. Normalmente, estos DLL se muestran como entradas de biblioteca de importación al enlazador. Algunas bibliotecas, como vcruntime y la biblioteca en tiempo de ejecución Universal C (UCRT), se incluyen de forma predeterminada. Si la aplicación o una de sus dependencias usa LoadLibrary para cargar un archivo DLL de manera dinámica, es posible que ese archivo DLL no se muestre en las entradas al enlazador. Una manera de recopilar la lista de archivos DLL cargados de forma dinámica consiste en ejecutar Dependency Walker (depends.exe) en la aplicación, como se describe en Descripción de las dependencias de una aplicación de Visual C++. Desafortunadamente, esta herramienta no está actualizada y puede notificar que no encuentra determinados archivos DLL.

Cuando tenga la lista de dependencias, compárela con la lista vinculada en el archivo Redist.txt que se encuentra en el directorio de instalación de Microsoft Visual Studio. O a la "lista REDIST" de archivos DLL Redistributable a la que se hace referencia en la sección "Archivos de código distribuible" de los Términos de licencia del software de Microsoft para la copia de Visual Studio. Para Visual Studio 2022, vea Código distribuible para Visual Studio 2022. Para Visual Studio 2019, vea Código distribuible para Visual Studio 2019. Para Visual Studio 2017, vea Código distribuible para Microsoft Visual Studio 2017 (incluye utilidades, extensibilidad y archivos BuildServer). Para Visual Studio 2015, vea Código distribuible para Microsoft Visual Studio 2015 y Microsoft Visual Studio 2015 SDK (incluye utilidades y archivos BuildServer). En Visual Studio 2013, la lista está disponible en línea en Código distribuible para Microsoft Visual Studio 2013 y Microsoft Visual Studio 2013 SDK.

En las versiones de Visual Studio anteriores a Visual Studio 2015, la biblioteca de tiempo de ejecución de C (CRT) se incluye como un archivo DLL Redistributable, en msvc[version].dll. En Visual Studio 2015, las funciones de CRT se refactorizaron en vcruntime y UCRT. UCRT es ahora un componente del sistema de Windows 10 y posteriores, administrado por Windows Update. Está disponible en todos los sistemas operativos Windows 10 y versiones posteriores. Para implementar la aplicación en sistemas operativos anteriores, es posible que también tenga que redistribuir UCRT. Se incluye una versión anterior de UCRT en los archivos Redistributable de Visual Studio. Esta versión solo se instala en sistemas operativos anteriores a Windows 10, y solo si no hay ninguna versión del UCRT ya instalada. Para obtener una versión instalable de UCRT para sistemas de nivel inferior como un paquete de actualización de sistema de Microsoft, vea Tiempo de ejecución de C universal de Windows 10 en el Centro de descarga de Microsoft.

No se pueden redistribuir todos los archivos incluidos en Visual Studio. Solo se le permite redistribuir los archivos especificados en Redist.txt o la "lista REDIST" en línea. Tampoco puede redistribuir las versiones de depuración de las aplicaciones ni las versiones de depuración de archivos DLL o bibliotecas proporcionadas por Microsoft. Solo puede copiar archivos ejecutables y bibliotecas de depuración en las máquinas que use para las pruebas. Para más información, vea Elegir un método de implementación.

En la tabla siguiente se describen algunos de los archivos DLL de Visual C++ de los que su aplicación puede depender.

Biblioteca de Visual C++ Descripción Se aplica a
vcruntime[version].dll Biblioteca en tiempo de ejecución para código nativo. Aplicaciones que usan los servicio de inicio y finalización normales del lenguaje C y C++.
vccorlib[version].dll Biblioteca en tiempo de ejecución para código administrado. Aplicaciones que usan los servicios del lenguaje C++ para código administrado.
msvcp[version].dll y msvcp[version_dotnumber].dll Biblioteca estándar de C++ para código nativo. Aplicaciones que usan la Biblioteca estándar de C++.
concrt[version].dll Biblioteca de runtime de simultaneidad para código nativo. Aplicaciones que usan el Runtime de simultaneidad.
mfc[version].dll Biblioteca MFC (Microsoft Foundation Class). Aplicaciones que usan la biblioteca MFC.
mfc[version][language].dll Recursos de la biblioteca Microsoft Foundation Classes (MFC). Aplicaciones que usan recursos de lenguaje específicos para MFC.
mfc[version]u.dll Biblioteca MFC con compatibilidad de Unicode. Aplicaciones que usan la biblioteca MFC y requieren compatibilidad con Unicode.
mfcmifc80.dll Biblioteca de interfaces administradas MFC. Aplicaciones que usan la biblioteca MFC con controles de Windows Forms.
mfcm[version].dll Biblioteca administrada MFC. Aplicaciones que usan la biblioteca MFC con controles de Windows Forms.
mfcm[version]u.dll Biblioteca administrada MFC con compatibilidad de Unicode. Aplicaciones que usan la biblioteca MFC con controles de Windows Forms y requieren compatibilidad con Unicode.
vcamp[version].dll Biblioteca AMP para código nativo. Aplicaciones que usan el código de la Biblioteca C++ AMP.
vcomp[version].dll Biblioteca OpenMP para código nativo. Aplicaciones que usan el código de la Biblioteca C++ OpenMP.

Nota:

Ya no es necesario redistribuir Active Template Library como archivo DLL independiente. Su funcionalidad se ha movido a los encabezados y a una biblioteca estática.

Para más información sobre cómo redistribuir estos archivos DLL con la aplicación, vea Redistribuir archivos de Visual C++. Para ver ejemplos, Ejemplos de implementación.

Normalmente, no es necesario redistribuir archivos DLL del sistema porque forman parte del sistema operativo. Sin embargo, puede haber excepciones, por ejemplo, si la aplicación se ejecutará en varias versiones de los sistemas operativos de Microsoft. En este caso, asegúrese de leer los términos de licencia correspondientes. Además, intente actualizar los archivos DLL del sistema a través de Windows Update, Service Pack o mediante otros paquetes Redistributable facilitados por Microsoft.

Consulte también

Elegir un método de implementación
Implementar aplicaciones de escritorio nativas