CORRECÇÃO: Os programas que estão incorporados no Visual C++ 2013 falha com a excepção de "Instrução ilegal"

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3174417
Sintomas
Quando cria um programa utilizando o Microsoft Visual C++ 2013, o programa falha e recebe uma excepção de "Instrução ilegal". Isto ocorre porque algumas funções de biblioteca de símbolos matemáticos de vírgula flutuante no Runtime do Visual C++ 2013 x64 C (CRT) não verificar correctamente se determinadas instruções AVX e FMA3 estão disponíveis antes das funções de tentarem utilizá-los. Se as instruções não estão disponíveis para utilização, chamadas para estas funções causam uma excepção de instrução ilegal (0xc000001d). Funções afectadas incluem o registo, log10 e pow e outros.

Este problema é mais provável nos seguintes cenários:
  • Uma versão antiga do sistema operativo Windows que não suporta AVX Estado guardar (por exemplo, o Windows Vista) se é utilizado num computador que suporta o conjunto de instruções de AVX
  • Se guardar de estado AVX seja explicitamente desactivada na configuração de arranque do sistema operativo
  • No ambiente de pré-instalação do Windows (Windows PE)

    Nota O Windows PE não suporta a poupança de estado AVX.

Este problema foi comunicado no Microsoft Connect:

Causa
Este problema ocorre porque o tempo de execução do Visual C++ 2013 x64 C não se verifica se o sistema operativo suportar AVX Estado guardar antes de tentar executar instruções AVX ou FMA3.
Resolução
Se todos os binários de C++ afectados criados utilizando o Visual C++ 2013 utilizam a DLL de tempo de execução C (msvcr120.dll), instale o actualizada Microsoft Visual C++ 2013 Redistributable – 12.0.40660.0 ou uma versão posterior.

Se os binários de C++ afectados ligar estaticamente o Visual C++ 2013 C Runtime, terá de actualizar a instalação do Visual Studio 2013 instalando a correcção 3174417 e a reconstrução e Reimplementar binários afectados.

Nota Este problema não afecta as versões mais antigas do Visual C++ C tempo de execução (Visual C++ 2012 e versões anteriores). O problema foi corrigido antes da disponibilização inicial do CRT Universal que é utilizada pelo Visual C++ 2015.

Centro de Transferências da Microsoft

Para actualizar o estaticamente ligadas Visual C++ 2013 tempo de execução C, a correcção 3174417 é disponibilizada como uma actualização de transferir apenas e não é distribuída através do Windows Update. Está disponível no Web site da Microsoft Download Center:

TransferirTransferir o pacote agora.

Para actualizar dinamicamente ligadas Visual C++ 2013 C Runtime DLLs, um actualizado redistribuível está disponível. Para mais informações, consulte o seguinte artigo na Microsoft Knowledge Base:

Como contornar
Towork resolver este problema, desactive a FMA3 na biblioteca de matemática se são afectados por este problema. É possível consultar se o sistema suporta instruções de AVX, chamarGetEnabledXStateFeatures e desactivando AVX no CRT explicitamente ao chamar _set_FMA3_enable(0).

Para mais informações, consulte Trabalhar com o contexto de XState no Web site da MSDN.

A função _set_FMA3_enable(0) é declarado na <math.h>e está disponível apenas quando criar para x64. (Este problema afecta apenas o x64 bibliotecas.) Isto faz com que a biblioteca de matemática reverter para as implementações de não FMA3 a utilizar. </math.h>

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3174417 - Última Revisão: 07/29/2016 05:55:00 - Revisão: 1.0

Visual Studio 2013 Community Edition

  • kbfix kbqfe atdownload kbexpertiseadvanced kbsurveynew kbmt KB3174417 KbMtpt
Comentários