Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Quando si compila un programma utilizzando Microsoft Visual C++ 2013, il programma si blocca e si riceve un'eccezione di "Istruzione non valida". Ciò si verifica perché alcune funzioni di libreria matematica a virgola mobile di runtime di Visual C++ 2013 x64 C (CRT) non controlla correttamente se determinate istruzioni AVX e FMA3 sono disponibili prima che le funzioni tentano di utilizzarli. Se le istruzioni non sono disponibili per l'utilizzo, chiamate a queste funzioni causano un'istruzione non valida (0xc000001d). Funzioni interessate includono log, log10 e pow e altri.

Questo problema è più probabile si verifichi nei seguenti scenari:

  • In una versione precedente del sistema operativo Windows che non supporta AVX stato salvataggio (ad esempio, Windows Vista) se viene utilizzato in un computer che supporta il set di istruzioni AVX

  • Se il salvataggio dello stato di AVX è disabilitato in modo esplicito nella configurazione di avvio del sistema operativo

  • Nell'ambiente di preinstallazione di Windows (Windows PE)

    Nota: Windows PE non supporta il salvataggio dello stato di AVX.


Questo problema è stato riscontrato su Microsoft Connect:

x64 funzione log () utilizza istruzioni AVX vpsrlq indipendentemente dal sistema operativo (si blocca in Vista x64)

Visual Studio 2013 RTM: Errore di generazione per AVX2 istruzioni di codice C++ x64

Causa

Questo problema si verifica perché il Runtime di Visual C++ 2013 x64 C verifica se il sistema operativo supporta il salvataggio dello stato AVX prima di tentare di eseguire istruzioni AVX o FMA3.

Risoluzione

Se tutti i binari C++ interessati che vengono compilati utilizzando Visual C++ 2013 utilizzano la DLL di Runtime C (msvcr120.dll), installare aggiornamento Microsoft Visual C++ 2013 Redistributable – 12.0.40660.0 o versione successiva.

Se i file binari C++ interessati collegano statico il Runtime di Visual C++ 2013 C, è necessario aggiornare l'installazione di Visual Studio 2013 installazione dell'hotfix 3174417 e ricompilare e ridistribuire i file binari interessati.









Nota: Questo problema non riguarda le versioni precedenti della C Runtime di Visual C++ (Visual C++ 2012 e versioni precedenti). Il problema è stato risolto prima del rilascio iniziale di CRT universale utilizzato da Visual C++ 2015.

Area Download Microsoft

Per aggiornare il Runtime di C collegata staticamente di Visual C++ 2013, l'hotfix 3174417 è stato rilasciato come un aggiornamento di solo download e non viene distribuito tramite Windows Update. È disponibile presso il sito Web Microsoft Download Center:

Download Download del pacchetto.

Per aggiornare dinamicamente collegato DLL di Visual C++ 2013 C Runtime, una versione aggiornata ridistribuibile è disponibile. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base:

Aggiornamento 3179560 per 2013 di Visual C++ e Visual C++ Redistributable Package

Soluzione alternativa

Per risolvere questo problema, disattivare FMA3 nella libreria math se è interessati da questo problema. È possibile eseguire una query se il sistema supporta istruzioni AVX chiamando GetEnabledXStateFeatures e la disattivazione di AVX in CRT in modo esplicito chiamando _set_FMA3_enable(0).

Per ulteriori informazioni, vedere utilizzo di contesto XStatesul sito Web MSDN.

La funzione _set_FMA3_enable(0) viene dichiarato in < Math > ed è disponibile solo quando si compila per x64. (Questo problema interessa solo la x64 le librerie.) In questo modo la libreria math per tornare a utilizzare le implementazioni non-FMA3.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×