Je voulais en savoir plus sur le mélange des temps d'exécution entre les exe et les dll. Sur une machine WinXP, j'ai créé une DLL construite avec le runtime de lancement (/ MD) et un exe qui appelle une fonction dans la DLL qui est construite debug (/ MDd). La fonction dans la DLL alloue de la mémoire au tas et l'exe le supprime. Je m'attendais à ce que cela tombe en panne, cependant, il se bloque à la place. En utilisant ProcessExplorer je vois que l'état de l'exécutable est "wait: userrequest". Le même exercice sur une machine Vista montre le dialogue. Je veux voir le dialogue sur ma machine XP aussi!Pourquoi la boîte de dialogue "Erreur d'application" n'apparaît-elle pas?
J'ai essayé le contraire de toutes les suggestions here. Je suis allé googled autour depuis un certain temps maintenant. J'ai joué avec l'activation de tous les services de rapport d'erreurs que j'ai pu trouver dans gpedit.msc et vérifié que le service de rapport d'erreurs est en cours d'exécution dans la boîte de dialogue AdministrativeTools-> Services.
Pour être explicite, voici mon dll:
int* getDllMem(){
printf("dll alloc mem");
int *ptr = new int;
return ptr;
}
Voici mon exe:
int main()
{
printf("main\n");
int *ptr = getDllMem();
printf("main delete\n");
delete ptr;
printf("main exit\n");
return 0;
}
Le programme est compilé sur XP seulement. Lorsque copié sur Vista, je vois une boîte de dialogue avec une erreur. – JamesG
Peut-être une solution rapide pourrait être d'utiliser des instructions try/catch, et gérer les erreurs gracieusement. – alexy13