Partilhar via


Determinar quais DLLs redistribuir

Quando você cria um aplicativo que usa 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. Visual Studio torna essas DLLs disponíveis como arquivos redistribuíveis que você pode incluir no instalador do aplicativo.

Para facilitar a inclusão das DLLs Redistribuíveis com seu instalador, elas estão disponíveis como pacotes Redistribuíveis autônomos. Esses pacotes são executáveis específicos da arquitetura que usam 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 porque a Microsoft pode usar o serviço Windows Update para atualizar essas bibliotecas de forma independente. Além da cópia em sua instalação do Visual Studio, os pacotes Redistributable atuais estão disponíveis para download. Para obter links para os pacotes Redistributable suportados mais recentes para conjuntos de ferramentas atuais e antigos, consulte Os downloads mais recentes suportados do Visual C++ Redistributable. Versões anteriores específicas dos pacotes Redistributable podem ser encontradas pesquisando my.visualstudio.com por "Visual C++ Redistributable Packages".

Para facilitar a inclusão das DLLs Redistribuíveis com seu instalador, elas estão disponíveis como pacotes Redistribuíveis autônomos. Esses pacotes são executáveis específicos da arquitetura que usam 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 porque a Microsoft pode usar o serviço Windows Update para atualizar essas bibliotecas de forma independente. Além da cópia em sua instalação do Visual Studio, os pacotes Redistributable atuais estão disponíveis para download. Para obter links para os pacotes Redistribuíveis suportados mais recentes para conjuntos de ferramentas atuais e antigos, consulte Os downloads mais recentes do Visual C++ suportados. Versões anteriores específicas dos pacotes Redistributable podem ser encontradas pesquisando my.visualstudio.com por "Visual C++ Redistributable Packages".

Só suportamos o uso de um pacote Redistribuível que seja igual ou mais recente do que a versão do conjunto de ferramentas. O número da versão principal do pacote Redistributable que você implanta deve corresponder à versão do conjunto de ferramentas do Visual Studio usado para criar seu aplicativo e a versão secundária deve ser a mesma ou superior. O Visual Studio 2022, 2019, 2017 e 2015 têm números de versão de conjuntos de ferramentas compatíveis . Para essas versões, quaisquer arquivos mais recentes do Visual Studio Redistributable 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 suportamos a utilização de ficheiros Redistribuíveis mais antigos em aplicações criadas utilizando um conjunto de ferramentas mais recente. Por exemplo, não há suporte para o uso dos arquivos Redistribuíveis 2017 em aplicativos criados usando o conjunto de ferramentas 2019.

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

As DLLs redistribuíveis individuais também estão incluídas na sua instalação do Visual Studio. Por padrão, eles são instalados nas pastas do Visual , %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 seu instalador em módulos de mesclagem. Esse método agora foi preterido porque as bibliotecas implantadas dessa maneira não podem ser atualizadas automaticamente pelo Windows Update. Os 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 Common Files\Merge Modules subdiretório. Para obter mais informações sobre o uso desses arquivos, consulte Redistribuindo componentes usando módulos de mesclagem.

As DLLs redistribuíveis individuais também estão incluídas na sua instalação do Visual Studio. Por padrão, eles são instalados no diretório de instalação do Visual Studio 2015 nas redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] pastas, 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 versão mais recente 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 seu aplicativo. Não recomendamos a implantação local porque ela torna você responsável pelo fornecimento de atualizações para seus aplicativos implantados. A implantação central usando os pacotes Redistributable é preferível.

Para determinar quais DLLs você precisa redistribuir com seu aplicativo, colete uma lista das DLLs das quais seu aplicativo depende. Essas DLLs são normalmente listadas como entradas de biblioteca de importação para o vinculador. Determinadas bibliotecas, como vcruntime e a Universal C Runtime Library (UCRT), são incluídas por padrão. Se seu aplicativo ou uma de suas dependências usa LoadLibrary para carregar dinamicamente uma DLL, essa DLL pode não estar listada nas entradas para o vinculador. Uma maneira de coletar a lista de DLLs carregadas dinamicamente é executar o Dependency Walker (depends.exe) em seu aplicativo, conforme descrito em Compreendendo as dependências de um aplicativo Visual C++. Infelizmente, esta ferramenta está desatualizada e pode relatar que não consegue encontrar determinadas DLLs.

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

Em versões do Visual Studio anteriores ao Visual Studio 2015, a CRT (C Runtime Library) foi incluída 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. O UCRT é agora um componente do sistema no Windows 10 e posterior, gerido pelo Windows Update. Está disponível em todos os sistemas operativos Windows 10 e posteriores. Para implantar seu aplicativo em sistemas operacionais anteriores, talvez seja necessário redistribuir o UCRT também. Uma versão anterior do UCRT está incluída nos arquivos redistribuíveis do Visual Studio. Esta versão só é instalada em sistemas operativos anteriores ao Windows 10 e apenas se nenhuma versão do UCRT já estiver instalada. Para obter uma versão instalável do UCRT para sistemas de nível inferior como um pacote de atualização do sistema Microsoft, consulte Windows 10 Universal C Runtime no Centro de Download da Microsoft.

Você não pode redistribuir todos os arquivos que estão incluídos no Visual Studio. Só é permitido redistribuir os arquivos especificados em Redist.txt ou na "lista REDIST" online. Também não pode redistribuir versões de depuração dos seus aplicativos ou das versões de depuração de DLLs ou bibliotecas fornecidas pela Microsoft. Você só pode copiar executáveis de depuração e bibliotecas para máquinas que você usa para testes. 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 seu aplicativo pode depender.

Biblioteca do Visual C++ Descrição Aplica-se a
vcruntime[version].dll Biblioteca de tempo de execução para código nativo. Aplicativos que usam os serviços normais de inicialização e terminação em linguagem C e C++.
vccorlib[version].dll Biblioteca de tempo de execução 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 Concorrência para código nativo. Aplicações que utilizam o Concurrency Runtime.
mfc[version].dll Biblioteca Microsoft Foundation Classes (MFC). Aplicações que usam a Biblioteca MFC.
mfc[version][language].dll Recursos da biblioteca Microsoft Foundation Classes (MFC). Aplicativos que usam recursos de linguagem específicos para MFC.
mfc[version]u.dll Biblioteca MFC com suporte a Unicode. Aplicações que usam a Biblioteca MFC e exigem suporte Unicode.
mfcmifc80.dll Biblioteca de interfaces gerenciadas MFC. Aplicações que usam a Biblioteca MFC com controlos de Windows Forms.
mfcm[version].dll Biblioteca gerenciada MFC. Aplicações que usam a Biblioteca MFC com controlos de Windows Forms.
mfcm[version]u.dll Biblioteca gerenciada MFC com suporte a Unicode. Aplicações que usam a biblioteca MFC com controlos do Windows Forms e exigem suporte a Unicode.
vcamp[version].dll Biblioteca AMP para código nativo. Aplicativos que usam o código da biblioteca AMP C++ .
vcomp[version].dll Biblioteca OpenMP para código nativo. Aplicações que usam o código da biblioteca C++ OpenMP.

Observação

Você não precisa mais redistribuir a biblioteca de modelos ativos 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 as DLLs do sistema porque elas fazem parte do sistema operacional. No entanto, pode haver exceções, por exemplo, quando seu aplicativo será executado em várias versões dos sistemas operacionais da Microsoft. Neste caso, certifique-se de ler os termos de licença correspondentes. Além disso, tente atualizar as DLLs do sistema por meio do Windows Update, service packs ou usando pacotes redistribuíveis disponibilizados pela Microsoft.

Ver também

Escolhendo um método de implantação
Distribuindo aplicações de desktop