Мне было интересно узнать больше о смешении времени выполнения между exes и dll. На машине WinXP я создал сборку dll для среды исполнения (MD) и exe, которая вызывает функцию в DLL, которая построена debug (/ MDd). Функция в dll выделяет память в кучу, и exe удаляет ее. Я ожидал, что это сбой, однако, он висит вместо этого. Использование ProcessExplorer Я вижу, что состояние исполняемого файла - «wait: userrequest». То же самое упражнение на машине Vista делает показывает диалог. Я хочу увидеть диалог на моей машине XP тоже!Почему я не вижу диалоговое окно «Ошибка приложения»?
Я пробовал противопоставить все предложения here. Я уже давно занимаюсь поиском в Интернете. Я играл с поддержкой всех служб отчетов об ошибках, которые я мог найти в gpedit.msc, а также подтвердил, что Служба отчетов об ошибках работает в диалоговом окне AdministrativeTools-> Services.
Чтобы быть явными, вот моя длл:
int* getDllMem(){
printf("dll alloc mem");
int *ptr = new int;
return ptr;
}
Вот мой ех:
int main()
{
printf("main\n");
int *ptr = getDllMem();
printf("main delete\n");
delete ptr;
printf("main exit\n");
return 0;
}
Программа составлена только на XP. При копировании в Vista я вижу диалог с ошибкой. – JamesG
Возможно, быстрое решение может заключаться в использовании инструкций try/catch и грамотно обрабатывать ошибки. – alexy13