Redistribuição do componente de runtime C compartilhado no Visual C++

Este artigo descreve como redistribuir o componente de runtime C compartilhado no Visual C++.

Versão original do produto: Visual Studio, .NET Framework
Número de KB original: 326922

Resumo

Quando você cria um aplicativo no Microsoft Visual Studio e o aplicativo usa as CRT (bibliotecas de tempo de execução C), distribua a DLL (biblioteca de link dinâmico) crt apropriada da seguinte lista com seu aplicativo:

  • Msvcr90.dll para Microsoft Visual C++ 2008
  • Msvcr80.dll para Microsoft Visual C++ 2005
  • Msvcr71.dll para Microsoft Visual C++ .NET 2003 com o Microsoft .NET Framework 1.1
  • Msvcr70.dll para Microsoft Visual C++ .NET 2002 com o Microsoft .NET Framework 1.0

Para Msvcr70.dll ou para Msvcr71.dll, você deve instalar a DLL do CRT no diretório de arquivos do programa de aplicativo. Talvez você não instale esses arquivos nos diretórios do sistema Windows. Para Msvcr80.dll e para Msvcr90.dll, você deve instalar o CRT como assemblies lado a lado do Windows.

Conflito de DLL

A DLL de CRT compartilhada foi distribuída pela Microsoft no passado como um componente do sistema compartilhado. Isso pode causar problemas quando você executa aplicativos vinculados a uma versão diferente do CRT em computadores que não têm as versões corretas da DLL crt instalada. É comumente chamado de problema de conflito de DLL .

Para resolver esse problema, a DLL do CRT não é mais considerada um arquivo do sistema, portanto, distribuir a DLL crt com qualquer aplicativo que dependa dele. Como ele não é mais um componente do sistema, instale-o no diretório Arquivos do Programa de aplicativos com outro código específico do aplicativo. O que impede que seu aplicativo use outras versões da biblioteca CRT que podem ser instaladas nos caminhos do sistema.

O Visual C++ .NET 2003 ou Visual C++ .NET 2002 instala a DLL crt no diretório System32 em um sistema de desenvolvimento. O que é instalado como uma conveniência para o desenvolvedor. Caso contrário, todos os projetos criados com Visual C++ que vinculam ao CRT compartilhado exigem uma cópia da DLL no diretório de build para depuração e execução. O Visual C++ 2005 e o Visual C++ 2008 instalam a DLL do CRT como um assembly lado a lado do Windows no Windows XP e sistemas operacionais posteriores. O Windows 2000 não dá suporte a assemblies lado a lado. No Windows 2000, a DLL do CRT é instalada no diretório System32.

Ao distribuir aplicativos que exigem a biblioteca crt compartilhada na DLL crt, recomendamos que você use o módulo crt.msm merge, que é incluído com Visual C++ em vez de distribuir diretamente o arquivo DLL.

Assemblies lado a lado do Windows

Msvcr80.dll com o Visual C++ 2005 e Msvcr90.dll com o Visual C++ 2008 são redistribuídos como assemblies lado a lado do Windows, exceto no Windows 2000. Você pode instalar essas versões do CRT em computadores de destino executando o aplicativo Vcredist_x86.exe incluído no Visual Studio. Há instaladores para as plataformas x64 e IA-64 também. Em vez disso, você pode usar o módulo de mesclagem msm crt, que é fornecido com o Visual Studio para empacotar o instalador CRT em seu próprio aplicativo de instalação. O que disponibilizará o CRT como um assembly compartilhado para todos os aplicativos porque ele está instalado no \windows\winsxs diretório em sistemas operacionais com suporte.

Referências