Надеюсь, это не очевидная проблема. Недавно я запускал исключения из-за отсутствия поддержки предотвращения выполнения данных (DEP) в нашем 32-разрядном исполняемом файле на сервере Windows 2008 R2. Добавление exe-файла в список исключений DEP решило проблему как обходной путь.
Я хотел бы скомпилировать с поддержкой DEP, но не могу найти никаких указаний о том, как это сделать в Builder XE5 c ++. Это возможно? Я нашел несколько расплывчатых предложений по Delphi, но ничего определенного.
Есть идеи?
AFAIK, C ++ Builder не имеет те же параметры DEP, что и Delphi. Вам придется либо
используйте внешний редактор PE для изменения флагов PE вашего скомпилированного EXE-файла.
вызов SetProcessDEPPolicy()
во время выполнения, например, в верхней части вашего main()
/Winmain()
функция:
void EnableDEP()
{
const DWORD PROCESS_DEP_ENABLE = 0x00000001;
typedef BOOL WINAPI (*LP_SPDEPP)(DWORD);
LP_SPDEPP SetProcessDEPPolicy = (LP_SPDEPP) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "SetProcessDEPPolicy");
if (SetProcessDEPPolicy != NULL)
SetProcessDEPPolicy(PROCESS_DEP_ENABLE);
}int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
EnableDEP();
...
}