2
我打電話給SetErrorMode無效?
"SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);"
加載DLL之前。儘管如此,一個Windows消息彈出
「此應用程序未能啓動 因爲blabla.dll沒有找到...」。
爲什麼會發生這種情況?我認爲這是SetErrorMode應該防止的? 謝謝!
恩,我想這裏有一點誤解。對不起,沒有更清楚。實際上,DLL通過LoadLibrary加載。 SetErrorMode在100%確定之前執行。但是當時加載另一個DLL(由我加載的DLL使用)失敗... – Boris
以前執行的代碼會以某種方式禁止設置錯誤模式嗎?例如。錯誤模式已由應用程序的另一部分設置,現在我無法將其設置爲不同的東西? – Boris
@Hans,這可能是發生了什麼事情。通常,SetErrorMode成功禁止LoadLibrary錯誤通知。嘗試在失敗後立即調用'GetErrorMode',看看它的當前值是什麼。如果它改變了,那就是你的問題。學習開發DLL的一個教訓 - 總是考慮某人之前調用SetErrorMode的可能性,並根據需要考慮屏蔽現有值......如果是這種情況,則可能需要手動檢查是否存在所需的LoadLibrary之前的DLL。 – eran