Simptomi
Razmislite o sledećem scenariju u programu Microsoft Dynamics SL 7.0 paketu sa opcijama 1 (FP1). Aplikaciju kreirate pomoću softverskog paketa Software Development Kit (SDK), a zatim dodate VBA prilagođavanje pomoću koda. Kada pokrenete aplikaciju, dobijate sledeću poruku o grešci:
"Microsoft Windows
<ApplicationName>. .. prestao je da radi"
Pri <ApplicationName> je ime aplikacije koju ste kreirali za Microsoft Dynamics SL 7.0 paket sa opcijama 1 (FP1).
Uzrok
Aplikacija koja koristi komponente napravljene uz ATL verziju 7.1 ili stariju verziju ugrađena je sa prekidača /NXCOMPAT (http://msdn2.microsoft.com/en-us/library/ms235442.aspx) ili OS na drugi način tretira operativni sistem kao "Nije eXecute kompatibilno". Instaliranje programa Visual Studio 2008 može dozvati da programi koji su naknadno ugrađeni u VS 2008 ili VS 2005 omoguće podrazumevanu kompatibilnost sa NX formatom. Isto tako, ako su DEP smernice za sistem postavljene na AlwaysOn, aplikacije koje koriste stariji kôd thunking (koriste se za prevod memorijske adrese (pokazivači) između 16-bitnog i 32-bitnog koda) videće ovaj problem.
Rezolucija
Napravite Project u događajima posle izgradnje da biste uklonili prekidač /NXCOMPAT na sledeći način u programu Visual Studio 2008:
1) Otvorite SDK 7.0 projekat Visual Studio 2008.
2) Kliknite desnim tasterom miša i izaberite svojstva 3) Izaberite karticu Kompajlirano 4) Kliknite na dugme "Build Events" u dnu 5) Dodajte sledeće u događaje
"Post-build" događaj
call "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
6) Sačuvajte i napravite projekat
Više informacija
Pogledajte http://support.microsoft.com/kb/948468 da biste dobili više informacija.