Determinar quais DLLs devem ser redistribuídas

Quando você compila um aplicativo que usa as DLLs de biblioteca fornecidas pelo Visual Studio, os usuários do seu aplicativo também devem ter essas DLLs em seus computadores para que o aplicativo seja executado. Como a maioria dos usuários provavelmente não tem o Visual Studio instalado, você deve fornecer essas DLLs para eles. O Visual Studio disponibiliza essas DLLs como Arquivos redistribuíveis que podem ser incluídos no instalador do aplicativo.

Para facilitar a inclusão das DLLs redistribuíveis com o instalador, elas estão disponíveis como Pacotes redistribuíveis autônomos. Esses pacotes são executáveis específicos a uma arquitetura que usa a implantação central para instalar os arquivos Redistribuíveis no computador de um usuário. Por exemplo, vc_redist.x86.exe instala as bibliotecas de 32 bits para computadores x86 e x64, vc_redist.x64.exe instala as bibliotecas de 64 bits para computadores x64 e vcredist.ARM64.exe instala as bibliotecas para computadores ARM e ARM64. Recomendamos a implantação central, pois a Microsoft pode usar o serviço Windows Update para atualizar essas bibliotecas de maneira independente. Além da cópia na sua instalação do Visual Studio, os pacotes redistribuíveis atuais estão disponíveis para download. Para obter links para os últimos pacotes redistribuíveis compatíveis com conjuntos de ferramentas atuais e antigos, confira Os downloads do Pacote Redistribuível do Visual C++ com suporte mais recentes. Encontre versões anteriores específicas dos pacotes redistribuíveis pesquisando my.visualstudio.com por "Pacotes Redistribuíveis do Visual C++".

Para facilitar a inclusão das DLLs redistribuíveis com o instalador, elas estão disponíveis como Pacotes redistribuíveis autônomos. Esses pacotes são executáveis específicos a uma arquitetura que usa a implantação central para instalar os arquivos Redistribuíveis no computador de um usuário. Por exemplo, vcredist_x86.exe instala as bibliotecas de 32 bits para computadores x86 e x64, vcredist_x64.exe instala as bibliotecas de 64 bits para computadores x64 e vcredist_ARM.exe instala as bibliotecas para computadores ARM. Recomendamos a implantação central, pois a Microsoft pode usar o serviço Windows Update para atualizar essas bibliotecas de maneira independente. Além da cópia na sua instalação do Visual Studio, os pacotes redistribuíveis atuais estão disponíveis para download. Para obter links para os últimos pacotes Redistribuíveis compatíveis com conjuntos de ferramentas atuais e antigos, confira Os downloads do Visual C++ mais recentes com suporte. Encontre versões anteriores específicas dos pacotes redistribuíveis pesquisando my.visualstudio.com por "Pacotes Redistribuíveis do Visual C++".

Só damos suporte ao uso de um pacote Redistribuível que seja igual ou mais recente do que a versão do conjunto de ferramentas. O número de versão principal do pacote Redistribuível implantado precisa corresponder à versão do conjunto de ferramentas do Visual Studio usado para criar o aplicativo e a versão secundária deve ser igual ou posterior. O Visual Studio 2022, 2019, 2017 e 2015 têm números de versão compatíveis com o conjunto de ferramentas. Para essas versões, quaisquer arquivos Redistribuíveis mais recentes do Visual Studio podem ser usados por aplicativos criados por um conjunto de ferramentas de uma versão mais antiga. Por exemplo, os arquivos Redistribuíveis do Visual Studio 2022 podem ser usados por aplicativos criados usando o conjunto de ferramentas do Visual Studio 2017 ou 2015. Embora possam ser compatíveis, não damos suporte ao uso de arquivos Redistribuíveis mais antigos em aplicativos criados usando um conjunto de ferramentas mais recente. Por exemplo, não há suporte para o uso dos arquivos Redistribuíveis de 2017 em aplicativos criados usando o conjunto de ferramentas 2019.

Também é possível incluir as DLLs redistribuíveis com o instalador em módulos de mesclagem. Esse método agora está preterido porque as bibliotecas implantadas dessa forma não podem ser atualizadas automaticamente pelo Windows Update. Os módulos de mesclagem redistribuíveis ou os módulos do Microsoft Installer (arquivos .msm) são componentes opcionais disponíveis no Instalador do Visual Studio. Se estiverem instalados, os módulos de mesclagem para as DLLs Redistribuíveis estão localizados no diretório de instalação do Visual Studio em %VCToolsRedistDir%\MergeModules\. No Visual Studio 2015 e em versões anteriores do Visual Studio, esses arquivos são encontrados no diretório Arquivos de Programas ou Arquivos de Programas (x86) em um subdiretório Common Files\Merge Modules. Para obter mais informações sobre o uso desses arquivos, confira Redistribuindo componentes usando módulos de mesclagem.

As DLLs Redistribuíveis individuais também estão incluídas na instalação do Visual Studio. Por padrão, eles são instalados nas pastas Visual the %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] , onde [architecture] representa a arquitetura de destino, [toolset] representa a versão do conjunto de ferramentas e [library] representa a biblioteca.

Também é possível incluir as DLLs redistribuíveis com o instalador em módulos de mesclagem. Esse método agora está preterido porque as bibliotecas implantadas dessa forma não podem ser atualizadas automaticamente pelo Windows Update. Módulos de mesclagem redistribuíveis para as DLLs redistribuíveis são encontrados no diretório Arquivos de Programas ou Arquivos de Programas (x86) em um subdiretório Common Files\Merge Modules. Para obter mais informações sobre o uso desses arquivos, confira Redistribuindo componentes usando módulos de mesclagem.

As DLLs Redistribuíveis individuais também estão incluídas na instalação do Visual Studio. Por padrão, elas são instalados no diretório de instalação do Visual Studio 2015, nas pastas redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library], onde [architecture] representa a arquitetura de destino, [toolset] representa a versão do conjunto de ferramentas e [library] é a biblioteca de depuração que tem as DLLs de depuração.

Use a última versão de qualquer arquivo DLL de biblioteca, pacote redistribuível ou módulo de mesclagem encontrado nesses diretórios. Você pode usar essas bibliotecas para implantação local, instalando-as no mesmo diretório do aplicativo. Não recomendamos a implantação local porque ela faz com que você fique responsável por fornecer atualizações aos aplicativos implantados. A implantação central usando os pacotes redistribuíveis tem preferência.

Para determinar quais DLLs você precisa redistribuir com o aplicativo, colete uma lista das DLLs das quais o aplicativo depende. Normalmente, essas DLL estão listadas como entradas da biblioteca de importação para o vinculador. Algumas bibliotecas, como vcruntime e o UCRT (Biblioteca de Tempo de Execução do C Universal), estão incluídas por padrão. Se o aplicativo ou uma de suas dependências usa LoadLibrary ao carregar uma DLL dinamicamente, essa DLL pode não estar listada nas entradas para o vinculador. Uma maneira de coletar a lista das DLLs carregadas dinamicamente é executar o Dependency Walker (depends.exe) no aplicativo, conforme descrito em Noções básicas sobre as dependências de um aplicativo do Visual C++. Infelizmente, essa ferramenta está desatualizada e pode relatar que não pode encontrar algumas DLLs.

Quando você tiver a lista de dependências, compare-a com a lista vinculada no arquivo Redist.txt encontrado no diretório de instalação do Microsoft Visual Studio. Ou, para a "lista REDIST" de DLLs redistribuíveis referenciadas na seção "Arquivos de Código Distribuíveis" dos Termos de Licença do Microsoft Software para sua cópia do Visual Studio. Para o Visual Studio 2022, consulte o Código Distribuível para Visual Studio 2022. Para o Visual Studio 2019, consulte o Código Distribuível para Visual Studio 2019. Para o Visual Studio 2017, confira Código distribuível para o Microsoft Visual Studio 2017 (inclui utilitários, extensibilidade e arquivos do BuildServer). Para o Visual Studio 2015, confira Código distribuível para o Microsoft Visual Studio 2015 e o SDK do Microsoft Visual Studio 2015 (inclui utilitários e arquivos do BuildServer). Para o Visual Studio 2013, a lista está disponível online em Código distribuível para o Microsoft Visual Studio 2013 e o SDK do Microsoft Visual Studio 2013.

Em versões do Visual Studio anteriores ao Visual Studio 2015, o CRT (Biblioteca de Runtime do C) foi incluído como uma DLL redistribuível, em msvc[version].dll. No Visual Studio 2015, as funções no CRT foram refatoradas no vcruntime e no UCRT. Agora, o UCRT é um componente do sistema no Windows 10 e posterior, gerenciado pelo Windows Update. Ele está disponível em todos os sistemas operacionais Windows 10 e posteriores. Para implantar o aplicativo em sistemas operacionais anteriores, talvez seja necessário redistribuir o UCRT também. Uma versão inicial do UCRT é incluída nos arquivos Redistribuíveis do Visual Studio. Esta versão é instalada apenas em sistemas operacionais anteriores ao Windows 10 e somente se não houver nenhuma versão do UCRT já instalada. Para obter uma versão instalável do UCRT para sistemas de nível inferior como um pacote de Atualização do Sistema da Microsoft, confira Runtime do C Universal do Windows 10 no Centro de Download da Microsoft.

Você não poderá redistribuir todos os arquivos incluídos no Visual Studio. Você só tem permissão para redistribuir os arquivos especificados na Redist.txt ou na "lista REDIST" online. Você também não pode redistribuir versões de depuração de seus aplicativos ou as versões de depuração de DLLs ou bibliotecas fornecidas pela Microsoft. Você só pode copiar executáveis e bibliotecas de depuração para computadores usados para teste. Para obter mais informações, consulte Escolhendo um método de implantação.

A tabela a seguir descreve algumas das DLLs do Visual C++ das quais o aplicativo pode depender.

Biblioteca do Visual C++ Descrição Aplica-se a
vcruntime[version].dll Biblioteca de Runtime para código nativo. Aplicativos que usam os serviços de inicialização e encerramento normais da linguagem C e C++.
vccorlib[version].dll Biblioteca de Runtime para código gerenciado. Aplicativos que usam os serviços de linguagem C++ para código gerenciado.
msvcp[version].dll e msvcp[version_dotnumber].dll Biblioteca Padrão C++ para código nativo. Aplicativos que usam a Biblioteca Padrão C++.
concrt[version].dll Biblioteca de Runtime de Simultaneidade para código nativo. Aplicativos que usam o Runtime de Simultaneidade.
mfc[version].dll Biblioteca MFC (Microsoft Foundation Classes). Aplicativos que usam a Biblioteca MFC.
mfc[version][language].dll Recursos da Biblioteca MFC (Microsoft Foundation Classes). Aplicativos que usam recursos de linguagem específicos ao MFC.
mfc[version]u.dll Biblioteca MFC com suporte a Unicode. Aplicativos que usam a Biblioteca MFC e que precisam de suporte a Unicode.
mfcmifc80.dll Biblioteca MFC de Interfaces Gerenciadas. Aplicativos que usam a Biblioteca MFC com Controles do Windows Forms.
mfcm[version].dll Biblioteca MFC Gerenciada. Aplicativos que usam a Biblioteca MFC com Controles do Windows Forms.
mfcm[version]u.dll Biblioteca MFC Gerenciada com suporte a Unicode. Aplicativos que usam a Biblioteca MFC com Controles do Windows Forms e que precisam de suporte a Unicode.
vcamp[version].dll Biblioteca AMP para código nativo. Aplicativos que usam o código da Biblioteca C++ AMP.
vcomp[version].dll Biblioteca OpenMP para código nativo. Aplicativos que usam o código da Biblioteca C++ OpenMP.

Observação

Você não precisa mais redistribuir a Active Template Library como uma DLL separada. Sua funcionalidade foi movida para cabeçalhos e uma biblioteca estática.

Para obter mais informações sobre como redistribuir essas DLLs com seu aplicativo, consulte Redistribuindo arquivos do Visual C++. Para obter exemplos, consulte Exemplos de implantação.

Normalmente, não é necessário redistribuir DLLs do sistema porque elas fazem parte do sistema operacional. No entanto, pode haver exceções, por exemplo, quando o aplicativo for executado em várias versões de sistemas operacionais Microsoft. Nesse caso, leia os termos de licença correspondentes. Além disso, tente atualizar as DLLs do sistema por meio do Windows Update, dos service packs ou usando os pacotes Redistribuíveis disponibilizados pela Microsoft.

Confira também

Escolhendo um método de implantação
Implantando aplicativos da área de trabalho