อาการ
พิจารณาสถานการณ์สมมติต่อไปนี้ใน Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1) คุณสร้างแอปพลิเคชันโดยใช้ Software Development Kit (SDK) แล้วเพิ่มการปรับแต่ง VBA ด้วยโค้ด เมื่อคุณเริ่มแอปพลิเคชัน คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
"Microsoft Windows
<ApplicationName>. .. ได้หยุดการใช้งานได้"
โดยที่ <ApplicationName> คือชื่อของแอปพลิเคชันที่คุณสร้างขึ้นใน Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1)
สาเหตุ
แอปพลิเคชันที่ใช้คอมโพเนนต์ที่สร้างขึ้นด้วย ATL เวอร์ชัน 7.1 หรือเวอร์ชันก่อนหน้าถูกสร้างขึ้นด้วยสวิตช์/NXCOMPAT (http://msdn2.microsoft.com/en-us/library/ms235442.aspx) หรือถือว่า OS เป็น "ไม่มี eXecute Compatible" การติดตั้ง Visual Studio 2008 อาจทําให้โปรแกรมที่สร้างขึ้นด้วย VS 2008 หรือ VS 2005 เพื่อเปิดใช้งานความเข้ากันได้ของ NX ตามค่าเริ่มต้น นอกจากนี้ ถ้านโยบาย DEP ของระบบถูกตั้งค่าเป็น AlwaysOn แอปพลิเคชันที่รวมรหัสเวอร์ชันที่เก่ากว่า (ใช้เพื่อแปลที่อยู่หน่วยความจํา (ตัวชี้) ระหว่างรหัส 16 บิตและ 32 บิต) จะเห็นปัญหานี้
การแก้ไข
สร้างProjectด้วยการตั้งค่าในเหตุการณ์ Post-build เพื่อเอาสวิตช์ /NXCOMPAT ออก ดังนี้ใน Visual Studio 2008:
1) เปิดโครงการ SDK 7.0 ด้วย Visual Studio 2008
2) คลิกขวาและเลือกคุณสมบัติ 3) เลือกแท็บคอมไพล์ 4) คลิกปุ่ม "สร้างเหตุการณ์" ที่ด้านล่าง 5) เพิ่มรายการต่อไปนี้ไปยังเหตุการณ์
"Post-build" เรียกว่า
"$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
6) บันทึกและสร้างโครงการ
ข้อมูลเพิ่มเติม
โปรดดู http://support.microsoft.com/kb/948468 ข้อมูลเพิ่มเติม