Triệu chứng
Hãy cân nhắc kịch bản sau đây trong Gói Tính năng Microsoft Dynamics SL 7.0 1 (FP1). Bạn tạo một ứng dụng bằng cách sử dụng Bộ công cụ Phát triển Phần mềm (SDK), rồi thêm tùy chỉnh VBA với mã. Khi khởi động ứng dụng, bạn nhận được thông báo lỗi sau đây:
"Microsoft Windows
<ApplicationName>. .. đã ngừng hoạt động"
Trong <ApplicationName> là tên của ứng dụng mà bạn đã tạo cho Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1).
Nguyên nhân
Ứng dụng sử dụng các cấu phần được tích hợp với ATL phiên bản 7.1 trở về trước được tích hợp với khóa chuyển /NXCOMPAT (http://msdn2.microsoft.com/en-us/library/ms235442.aspx) hoặc được hệ điều hành coi là "Không tương thích eXecute". Cài Visual Studio 2008 có thể gây ra các chương trình sau đó được tích hợp với VS 2008 hoặc VS 2005 để bật tính tương thích NX theo mặc định. Ngoài ra, nếu chính sách DEP của hệ thống được đặt là AlwaysOn, các ứng dụng kết hợp mã viết tay cũ hơn (được sử dụng để dịch địa chỉ bộ nhớ (con trỏ) giữa mã 16 bit và 32 bit) sẽ gặp sự cố này.
Giải pháp
Xây dựng Project với cài đặt trong các sự kiện Sau khi dựng để loại bỏ khóa chuyển /NXCOMPAT như sau trong Visual Studio 2008:
1) Mở dự án SDK 7.0 với Visual Studio 2008.
2) Bấm chuột phải và chọn thuộc tính 3) Chọn tab Dịch mã 4) Bấm vào nút "Dựng Sự kiện" ở cuối 5) Thêm những nội dung sau vào các sự kiện "Sau khi dựng" gọi
"$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
6) Lưu và xây dựng dự án
Thông tin Bổ sung
Tham khảo tại http://support.microsoft.com/kb/948468 thêm thông tin.