Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Příznaky

Při vytváření aplikace pomocí Microsoft Visual C++ 2013, dojde k chybě programu a obdržíte výjimku "Neplatná instrukce". K tomu dochází, protože některé funkce knihovny matematiku s plovoucí desetinnou čárkou v aplikaci Visual C++ 2013 x64 C Runtime (CRT) nesprávně kontroluje zda jsou k dispozici některé instrukce AVX a FMA3, před jejich použití funkce. Pokud pokyny nejsou k dispozici, volání těchto funkcí způsobit výjimku Neplatná instrukce (0xc000001d). Ovlivněné funkce obsahují protokol, log10 a pow a další.

Tento problém je pravděpodobně dojít v následujících situacích:

  • Na starší verze operačního systému Windows, který nepodporuje AVX stavu ukládání (například systém Windows Vista) Pokud se používá v počítači, který podporuje instrukční sadu AVX

  • Pokud v konfiguraci spouštění operačního systému je výslovně zakázáno ukládání stavu AVX

  • V prostředí předinstalace systému Windows (Windows PE)

    Poznámka: Prostředí Windows PE nepodporuje ukládání stavu AVX.


Tento problém je hlášeno na webu Microsoft Connect:

x64 funkce log() používá instrukce AVX vpsrlq bez ohledu na operační systém (takže se zhroutí na Vista x64)

Visual Studio 2013 RTM: C++ x64 kód chyby generování pokyny AVX2

Příčina

K tomuto problému dochází, protože modul Runtime Visual C++ 2013 x64 C nekontroluje, zda operační systém podporuje ukládání stavu AVX, před pokusem o spuštění pokyny AVX nebo FMA3.

Řešení

Pokud všech příslušných binárních souborů C++, které jsou vytvořeny pomocí Visual C++ 2013 použít knihovny DLL C Runtime (msvcr120.dll), nainstalujte aktualizovaný Microsoft Visual C++ 2013 Redistributable – 12.0.40660.0 nebo novější.

Pokud vaše příslušných binárních souborů C++ staticky propojíte Visual C++ 2013 C Runtime, je nutné aktualizovat instalace sady Visual Studio 2013 instalací opravy hotfix 3174417 a opětovné sestavení a opětovného nasazení příslušných binárních souborů.









Poznámka: Tento problém nemá vliv na starší verze Visual C Runtime C++ (Visual C++ 2012 a starší). Problém byl opraven před počáteční verze Universal CRT, který používá Visual C++ 2015.

Microsoft Download Center

3174417 opravy hotfix k aktualizaci staticky propojené aplikace Visual C++ 2013 C Runtime, je vydána jako pouze ke stažení aktualizace a není distribuována prostřednictvím služby Windows Update. Je k dispozici na webu Microsoft Download Center:

Download Stáhněte balíček.

Chcete-li aktualizovat dynamicky propojené Visual C++ 2013 C Runtime knihoven DLL, aktualizace redistributable je k dispozici. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

3179560 aktualizace pro aplikaci Visual C++ 2013 a Visual C++ Redistributable Package

Jak potíže obejít

Chcete-li tento problém vyřešit, zakažte FMA3 v math library, pokud jsou ovlivněny tento problém. Může se dotázat, zda systém podporuje instrukce AVX voláním GetEnabledXStateFeatures a zákaz AVX v CRT explicitně voláním _set_FMA3_enable(0).

Další informace naleznete v tématu práce s XState kontextna webu MSDN.

Funkce _set_FMA3_enable(0) je deklarován v < math.h > a je k dispozici pouze v případě, že sestavení pro x64. (Tento problém ovlivňuje pouze x64 knihoven.) To způsobí, že math library vrátit pomocí jiných FMA3 implementace.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×