Problema com o programa Visual C ++ - não consigo encontrar o CRT de depuração

StackOverflow https://stackoverflow.com/questions/2361517

  •  23-09-2019
  •  | 
  •  

Pergunta

Eu tenho um amigo que está assumindo um projeto visual de C ++ e está tendo problemas para executá -lo. É um aplicativo gráfico e usa a biblioteca QT GUI. O motivo pelo qual mencionei isso é por causa do erro abaixo.

Ele pode construir e vincular o programa usando o Visual Studio 2010, mas quando ele o executa, essa mensagem aparece no visualizador de eventos:

A geração de contexto de ativação falhou para "D: test qt 4.2.2 bin qtguid4.dll". Assembléia dependente Microsoft.vc80.debugcrt, ProcessOrchitecture = "X86", PublicKeyToken = "1FC8B3B9A1E18E3B", TIPO = "Win32", versão = "8.0.50608.0" Não foi possível encontrar. Use sxstrace.exe para diagnóstico detalhado.

Quando fazemos o que a mensagem pede e executamos sxstrace.exe, eis o que vemos:

Comece a geração de contexto de ativação. Parâmetro de entrada: sinalizadores = 0 ProcessOarquitetura = Wow32 CultureFallbacks = en-us; en manifestpath = d: test qt 4.2.2 bin qtguid4.dll AssemblyDirectory = D: test qt 4.2.2 bin

--------------- Info: Parsing Manifest File D: Test qt 4.2.2 bin qtguid4.dll. Informações: A identidade de definição de manifesto é (NULL). Informações: Referência: Microsoft.vc80.debugcrt, ProcessOrchitecture = "X86" Type = "Win32", Version = "8.0.50608.0" Informações: Resolução de referência Microsoft.vc80.debugcrt, Processorarquitetura = "x86" "" Win32 ", versão =" 8.0.50608.0 ". Informações: Resolução de referência para processamento de processamento WoW64. Informações: Resolvendo a referência para a cultura neutra. Informações: Aplicação da política de ligação. Informações: Nenhuma política do editor encontrada. Informações: Nenhum redirecionamento da política de ligação encontrado. Informações: Inicie a sondagem da montagem. Informações: não encontrou a montagem no WINSXS. Informações: Tente investigar o manifesto em C: Windows Assembly GAC_32 Microsoft.vc80.debugcrt 8.0.50608.0__1fc8b3b9a1e18e3b microsoft.vc80.debugcrt.dll. Informações: não encontrou manifesto para a cultura neutra. Informações: Sondagem de montagem final. Informações: Resolução da referência para a processamento da processagem x86. Informações: Resolvendo a referência para a cultura neutra. Informações: Aplicação da política de ligação. Informações: Nenhuma política do editor encontrada. Informações: Nenhum redirecionamento da política de ligação encontrado. Informações: Inicie a sondagem da montagem. Informações: não encontrou a montagem no WINSXS. Informações: Tente investigar o manifesto em C: Windows Assembly GAC_32 Microsoft.vc80.debugcrt 8.0.50608.0__1fc8b3b9a1e18e3b microsoft.vc80.debugcrt.dll. Informações: Tente investigar o manifesto em d: test qt 4.2.2 bin microsoft.vc80.debugcrt.dll. Informações: Tente investigar o manifesto em d: test qt 4.2.2 bin microsoft.vc80.debugcrt.Manifest. Informações: Tente investigar o manifesto em d: test qt 4.2.2 bin microsoft.vc80.debugcrt microsoft.vc80.debugcrt.dll. Informações: Tente investigar o manifesto em d: test qt 4.2.2 bin microsoft.vc80.debugcrt microsoft.vc80.debugcrt.Manifest. Informações: não encontrou manifesto para a cultura neutra. Informações: Sondagem de montagem final. Erro: Não é possível resolver a referência microsoft.vc80.debugcrt, ProcessOrchitecture = "X86", PublicKeyToken = "1FC8B3B9A1E18E3B", TIPO = "Win32", Version = "8.0.50608.0".

Desculpe pela duração dessa mensagem, mas pensei que poderia correr algumas lembranças. Este é um caso de ele não ter o Visual C ++ 2005 (acredito que é de onde vem o VC80) C Bibliotecas de tempo de execução instaladas? Nesse caso, ele pode baixar o pacote de redistribuição VC ++ e instalá -lo, e tudo ficará bem? Ou isso é um problema completamente diferente?

Foi útil?

Solução

Se o seu amigo não tiver o VS2005 instalado, ele não terá as bibliotecas de tempo de execução de depuração para ele. Eles não fazem parte dos tempos de execução redistribuíveis e a IIRC, a Microsoft proíbe você de distribuí -los por você mesmo, para que você precise instalar o VS2005 para obtê -los.

Eu sugeriria que ele reconstruiria a biblioteca afetada, se possível; Lembro -me vagamente de que existem alguns artigos na web sobre como reconstruir o GPL QT usando o Visual Studio, que acredito que não é oficialmente apoiado.

Misturar os tempos de execução do C ++ requer muito cuidado e você pode cair em uma armadilha bastante desagradável se não acertar exatamente. Se a reconstrução de todas as bibliotecas com o VS2010 não for uma opção, seu amigo terá que se apossar do VS2005. Pode valer a pena verificar se a MS ainda oferece a edição expressa do VS2005 para download.

Outras dicas

Isso não tem nada a ver com "eventos pré-construir". Esta é uma otimização que pode ou não ser aplicada pelo compilador durante a compilação.

Ao segmentar o .NET Framework, você adiciona uma camada adicional de complexidade de otimização. Muitas das possíveis otimizações não são realizadas pelo compilador C # quando você compila inicialmente o código para IL, mas sim pelo compilador JIT antes do seu código é executado (quando o IL é compilado em código nativo).

e sim, o compilador JIT certamente aplicará as otimizações triviais como inlinando uma chamada de função sempre que possível. Esta é fruta baixa para qualquer otimizador. (Embora, existam condições em que as funções do inlinamento podem tornar as coisas mais lentas , e o otimizador é geralmente inteligente o suficiente para reconhecer isso. Você deve sempre confiar no otimizador, em vez de tentar forçá-lo a fazer o que > você acha que faz sentido. É geralmente mais esperto que você.)

Seu foco deve estar no código de gravação que é claro e fácil de ler / manter. Não se preocupe com como otimizá-lo até depois de profilizar e determinar que é muito lento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top