Симптоми
Помислете за следния сценарий в Microsoft Dynamics SL 7.0 Feature Pack 1 (FP1). Създавате приложение с помощта на комплекта за разработване на софтуер (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) или по друг начин се третира от операционната система като "Няма съвместимо 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) Изберете раздела Compile 4) Щракнете върху бутона "Компилация на събития" в долната част 5) Добавете следното към
повикването за събития "След
компилацията" "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
6) Записване и изграждане на проекта
Повече информация
Вижте http://support.microsoft.com/kb/948468 за повече информация.