Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As Ferramentas de Build do Microsoft C++ (MSVC) no Visual Studio 2013 e anteriores não garantem compatibilidade binária entre as principais versões. Você não pode vincular arquivos de objeto, bibliotecas estáticas, bibliotecas dinâmicas e executáveis criados por diferentes versões dessas ferramentas de build. As ABIs, os formatos de objeto e as bibliotecas de runtime são incompatíveis.
Alteramos esse comportamento no Visual Studio 2015 e versões mais recentes. As bibliotecas de runtime e os aplicativos compilados por qualquer uma dessas versões do compilador são compatíveis com binário. Isso se reflete no número principal das Ferramentas de Build do MSVC, que começa com 14 para todas as versões desde o Visual Studio 2015. (A versão das ferramentas de build é v140 para Visual Studio 2015, v141 para 2017, v142 para 2019 e v143 para 2022). Digamos que você tenha bibliotecas de terceiros criadas pelo Visual Studio 2015. Você ainda pode usá-los em um aplicativo criado pelo Visual Studio 2017, 2019, 2022 ou 2026. Não é necessário recompilar com uma versão correspondente. A versão mais recente do pacote redistribuível do Visual C++ (o Redistribuível) funciona para todas elas.
Restrições à compatibilidade binária
Há três restrições importantes à compatibilidade binária entre as ferramentas de build v140, v141, v142, v143 e v145 e atualizações de versão numérica menores:
- Binários criados com diferentes versões das ferramentas de build v140, v141, v142, v143 e v145 podem ser combinados. A regra principal é que o vinculador só deve funcionar com entradas criadas por ferramentas de build que são a mesma versão (ou anterior) que ela mesma. Isso se aplica a aplicativos, bibliotecas importadas, bibliotecas estáticas e outros arquivos, conforme descrito em arquivos de entrada de LINK. Em alguns casos, uma biblioteca de importação para uma DLL vinculada implicitamente criada por uma versão posterior das ferramentas de build pode ser vinculada usando uma versão anterior das ferramentas de build, especialmente se a biblioteca de importação é estritamente usada
extern "C"para as importações/exportações. Aqui estão alguns exemplos do que tudo isso significa:- Um aplicativo compilado com as ferramentas de build de 2017 (v141, versões 15.0 a 15.9) pode ser vinculado a uma biblioteca estática compilada com o Visual Studio 2022 versão 17.8 (v143), mas a vinculação deve ser feita usando uma versão 17.8 ou ferramentas de build posteriores.
- Aplicativos e bibliotecas criados usando o VS 2015, 2017, 2019, 2022 e 2026 podem ser vinculados juntos, mas a vinculação deve ser feita usando uma versão das ferramentas de build tão recentes quanto ou mais recentes do que as ferramentas de build mais recentes usadas para criar qualquer um dos binários que você passa para o vinculador. Por exemplo, considerando três binários criados com ferramentas de build do VS 2015 versão 14.3, VS 2017 versão 15.9 e VS 2019 versão 16.11, você pode vinculá-los usando qualquer versão de ferramentas de build que seja 16.11 ou posterior.
- Se uma DLL for criada com ferramentas de build mais recentes, a biblioteca de importação às vezes poderá ser usada com ferramentas de build mais antigas se todas as exportações seguirem a convenção de chamada de linguagem C (
extern "C"). No entanto, o único caso com suporte oficial é consumir um SDK do Windows mais recente com ferramentas de build mais antigas.
- A Redistribuível que seu aplicativo usa tem uma restrição de compatibilidade binária semelhante. Quando você mistura binários criados por diferentes versões com suporte das ferramentas de build, a versão redistribuível deve ser pelo menos tão nova quanto as ferramentas de build mais recentes usadas por qualquer componente de aplicativo.
- Bibliotecas estáticas ou arquivos de objeto compilados usando o switch de compilador
/GL(otimização do programa inteiro) ou vinculados usando/LTCG(geração de código durante o tempo de vinculação)não são compatíveis com binários em diferentes versões, incluindo atualizações de versões secundárias. Todos os arquivos de objeto e bibliotecas compilados usando/GLe/LTCGdevem usar exatamente as mesmas ferramentas de build para o compilador e o link final. Por exemplo, o código criado usando/GLas ferramentas de build do Visual Studio 2019 versão 16.7 não pode ser vinculado ao código criado usando/GLas ferramentas de build do Visual Studio 2019 versão 16.8. O compilador emite o erro fatal C1047.
Atualize o Pacote Redistribuível do Visual C++ do Visual Studio 2015 e mais recentes
Mantivemos o número de versão principal redistribuível do Microsoft Visual C++ igual para Visual Studio 2015, 2017, 2019, 2022 e 2026. Isso significa que apenas uma instância do Redistribuível pode ser instalada por vez. Uma versão mais recente substitui qualquer versão mais antiga que já esteja instalada. Por exemplo, um aplicativo pode instalar o Redistribuível a partir do Visual Studio 2015. Em seguida, outro aplicativo instala o Redistribuível do Visual Studio 2026. A versão 2026 substitui a versão mais antiga, mas por ser compatível com binários, o aplicativo anterior ainda funciona bem. Garantimos que a versão mais recente do Redistributable tenha todos os recursos mais recentes, atualizações de segurança e correções de bugs. É por isso que recomendamos sempre que você atualize para a versão mais recente disponível.
Da mesma forma, não é possível instalar um Redistribuível mais antigo quando uma versão mais recente já estiver instalada. O instalador relatará um erro se você tentar. Por exemplo, você verá um erro deste tipo se instalar o Redistribuível 2022 em um computador que já tem a versão 2026:
0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
Este erro ocorre por design. Recomendamos que você mantenha a versão mais recente instalada. Verifique se o instalador pode se recuperar desse erro de maneira silenciosa.
Importante
O suporte à biblioteca de runtime para Windows XP não está mais disponível no Pacote Redistribuível do Visual C++ para Visual Studio mais recente. O último redistribuível para dar suporte ao Windows XP é a versão 16.7 (versão 14.27.29114.0). Se seus aplicativos do Windows XP forem implantados ou atualizados para uma versão posterior do pacote redistribuível, os aplicativos não serão executados. Para mais informações e saber como obter uma versão do redistribuível que tenha suporte para Windows XP, consulte Configurar programas para o Windows XP.
Confira também
Histórico de alterações do Visual C++
Downloads do Pacote Redistribuível do Visual C++ com suporte mais recentes
Como auditar o uso da versão do Runtime do Visual C++
Perguntas frequentes sobre o ciclo de vida – bibliotecas redistribuíveis e de runtime do Visual C++