تصحيح: البرامج التي تم إنشاؤها في Visual c + + 2013 تحطم باستثناء "تعليمات غير قانونية"

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية3174417
الأعراض
عند إنشاء برنامج باستخدام Microsoft Visual c + + عام 2013، يتعطل البرنامج وتتلقى استثناء "تعليمات غير قانونية". يحدث هذا بسبب بعض دالات مكتبة حساب الفاصلة العائمة في Visual c + + 2013 x64 C وقت التشغيل (CRT) يتحقق ما إذا كانت بعض الإرشادات AVX و FMA3 متوفرة قبل محاولة الوظائف استخدامها. إذا لم تتوفر الإرشادات للاستخدام، الاستدعاءات إلى هذه الدوال يؤدي استثناء تعليمة غير قانونية (0xc000001d). تتضمن دالات المتأثرة سجل، log10، وأسرى الحرب وغيرها.

هذه المشكلة الأكثر احتمالاً أن يحدث في السيناريوهات التالية:
  • في نسخة قديمة من نظام تشغيل Windows الذي لا يدعم AVX حالة حفظ (على سبيل المثال، في Windows Vista) إذا يتم استخدامه على جهاز كمبيوتر يدعم مجموعة إرشادات AVX
  • إذا تم تعطيل الحفظ الدولة AVX بشكل واضح في تكوين تشغيل نظام التشغيل
  • في بيئة التثبيت المسبق ل Windows (Windows PE)

    ملاحظة: لا يعتمد Windows PE حفظ حالة AVX.

تم الإبلاغ عن هذه المشكلة على اتصال Microsoft:

السبب
تحدث هذه المشكلة لأن وقت التشغيل Visual c + + x64 C عام 2013 لن يتحقق ما إذا كان نظام التشغيل يدعم حفظ حالة AVX قبل أن يحاول تشغيل تعليمات AVX أو FMA3.
الحل
في حالة استخدام كافة الثنائيات c + + المتأثرة التي تم إنشاؤها باستخدام Visual c + + 2013 DLL وقت التشغيل C (msvcr120.dll)، تثبيت تحديث Microsoft Visual c + + 2013 القابلة لإعادة التوزيع – 12.0.40660.0 أو إصدار أحدث.

إذا كان الارتباط ثنائيات c + + الخاص المتأثر بشكل ثابت "وقت التشغيل C 2013 Visual c + +"، يجب تحديث تثبيت Visual Studio 2013 بتثبيت الإصلاح العاجل 3174417 وإعادة بناء وإعادة نشر الثنائيات المتأثرة.

ملاحظة: لا تؤثر هذه المشكلة على الإصدارات السابقة من Visual c + + C وقت التشغيل (2012 Visual c + + والإصدارات السابقة). تم إصلاح المشكلة قبل الإصدار الأولى من CRT العالمي المستخدمة من قبل Visual c + + 2015.

مركز تنزيل Microsoft

لتحديث المرتبط بشكل ثابت Visual c + + 2013 C وقت التشغيل، الإصلاح العاجل 3174417 إصدارها كتحديث تنزيل فقط ولم يتم توزيعها من خلال Windows Update. ومتوفرة في موقع "مركز تنزيل microsoft":

تنزيلقم بتنزيل الحزمة الآن.

لتحديث مرتبط بشكل حيوي Visual c + + 2013 C وقت تشغيل Dll، مستكملا القابلة لإعادة التوزيع متوفرة. لمزيد من المعلومات، راجع مقالة قاعدة معارف Microsoft التالية:

الحل البديل
تووورك حول هذه المشكلة، قم بتعطيل FMA3 في مكتبة الرياضيات إذا كنت متأثراً بهذه المشكلة. يمكنك الاستعلام عن ما إذا كان النظام يعتمد الإرشادات AVX عن طريق استدعاءجيتينابليدكسستاتيفيتوريس وتعطيل AVX في CRT بشكل صريح عن طريق استدعاء _set_FMA3_enable(0).

لمزيد من المعلومات، راجع العمل باستخدام سياق إكسستاتي على موقع MSDN على الويب.

تم تعريف الدالة _set_FMA3_enable(0) في <math.h>، ويتوفر فقط عند إنشائك ل x64. (هذه المشكلة تؤثر x64 فقط المكتبات.) يؤدي مكتبة الرياضيات العودة لاستخدام التطبيقات غير FMA3. </math.h>

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 3174417 - آخر مراجعة: 07/28/2016 08:19:00 - المراجعة: 1.0

Visual Studio 2013 Community Edition

  • kbfix kbqfe atdownload kbexpertiseadvanced kbsurveynew kbmt KB3174417 KbMtar
تعليقات