Ознаки
Розглянемо такий сценарій у Microsoft Dynamics SL 7.0 із пакетом функцій 1 (FP1). Ви створюєте програму за допомогою натиснете клавішу SDK, а потім додайте до неї налаштування VBA із кодом. Під час запуску програми з'являється таке повідомлення про помилку:
"Microsoft Windows
<ApplicationName>. .. припинив роботу"
Де <ApplicationName> – це ім'я програми, створеної для Microsoft Dynamics SL 7.0 із пакетом функцій 1 (FP1).
Причина
Програма, яка використовує компоненти, вбудовані в ATL версії 7.1 або старішої, побудовано за допомогою перемикача /NXCOMPAT (http://msdn2.microsoft.com/en-us/library/ms235442.aspx) або ос іншим чином вважається "Немає сумісності eXecute". Інсталяція Visual Studio 2008 може спричинити подальші програми, створені у VS 2008 або VS 2005, щоб увімкнути сумісність із NX за замовчуванням. Крім того, якщо для політики dep для системи встановлено значення AlwaysOn, ця проблема виникає в програмах, які використовують старий код розбивки (використовується для перекладу адрес пам'яті (вказівників) між 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) Збережіть і створіть проект