我有興趣瞭解更多關於在exes和dll之間混合運行時的知識。在WinXP機器上,我創建了一個針對發佈運行時(/ MD)的dll構建和一個調用構建debug(/ MDd)的dll中的函數的exe。 dll中的函數將內存分配給堆,exe將其刪除。我預計這會崩潰,但是,它會掛起。使用ProcessExplorer我看到可執行文件的狀態是「wait:userrequest」。在Vista機器上運行同樣的練習確實顯示對話框。我想在XP機器上看到對話框!爲什麼我看不到「應用程序錯誤」對話框?
我試過所有建議here的相反。我已經搜索了很長一段時間了。我已經玩過了在gpedit.msc中能夠找到的所有錯誤報告服務,並驗證錯誤報告服務正在AdministrativeTools-> Services對話框中運行。
要明確的,這是我的dll:
int* getDllMem(){
printf("dll alloc mem");
int *ptr = new int;
return ptr;
}
這裏是我的exe文件:
int main()
{
printf("main\n");
int *ptr = getDllMem();
printf("main delete\n");
delete ptr;
printf("main exit\n");
return 0;
}
該程序僅在XP上編譯。當複製到Vista時,我看到有錯誤的對話框。 – JamesG 2010-09-15 19:54:00
也許一個快速的解決方案可能是使用try/catch語句,並優雅地處理錯誤。 – alexy13 2010-09-15 21:01:09