الأعراض
فكر في السيناريو التالي في Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1). يمكنك إنشاء تطبيق باستخدام مجموعة أدوات تطوير البرامج (SDK)، ثم إضافة تخصيص VBA مع التعليمات البرمجية. عند بدء تشغيل التطبيق، ستتلقى رسالة الخطأ التالية:
"Microsoft Windows
<ApplicationName>. .. توقف عن العمل"
حيث <ApplicationName> اسم التطبيق الذي أنشأته ل Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1).
السبب
تم تصميم التطبيق الذي يستخدم المكونات التي تم إنشاؤها باستخدام الإصدار 7.1 من ATL أو الإصدارات السابقة باستخدام مفتاح التبديل /NXCOMPAT (http://msdn2.microsoft.com/en-us/library/ms235442.aspx)، أو يعامله نظام التشغيل بطريقة أخرى على أنه "غير متوافق مع eXecute". قد يؤدي Visual Studio 2008 إلى تمكين البرامج التي تم إنشاؤها لاحقا مع VS 2008 أو VS 2005 لتمكين توافق NX بشكل افتراضي. أيضا، إذا تم تعيين نهج DEP للنظام إلى AlwaysOn، فستعمل التطبيقات التي تتضمن رمز thunking الأقدم (المستخدم لترجمة عناوين الذاكرة (الرموز) بين التعليمات البرمجية 16 بت و32 بت) على رؤية هذه المشكلة.
الحل
قم Project الإعداد في أحداث ما بعد البناء لإزالة مفتاح التبديل /NXCOMPAT كما يلي في Visual Studio 2008:
1) افتح مشروع SDK 7.0 مع Visual Studio 2008.
2) انقر بزر الماوس الأيمن وحدد الخصائص 3) حدد علامة التبويب التحويل البرمجي 4) انقر فوق الزر "أحداث البناء" في الأسفل 5) أضف ما يلي إلى الأحداث "ما بعد البناء" استدعاء
"$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
6) حفظ المشروع وإنشئه
مزيد من المعلومات
راجع http://support.microsoft.com/kb/948468 للحصول على مزيد من المعلومات.