Delay Load DLL: "Exception 0xC06D007E: Modul nicht gefunden", wenn Anwendung gestartet wird mehrere Male
Ich habe einen Fall eines zeitweiligen Absturz in meiner Anwendung, wo wir mit Verspätung DLL Laden. Es gibt ein paar verschiedene call-stacks, wo wir gesehen haben, der crash, aber es immer abstürzt beim heben 0xC06D007E: Module not found
im __delayLoadHelper2
.
Ausnahme wird ausgelöst, wenn ein Aufruf der Prozess mehrere Male hintereinander (in Serie). Hier ist ein Beispiel-Aufruf-stack:
KERNELBASE.dll!RaiseException() + 0x3d bytes
MYDLL.dll!__delayLoadHelper2(const ImgDelayDescr * pidd=0x000000000012f650, __int64 (void)* * ppfnIATEntry=0x000000000012f570) Line 331 C++
MYDLL.dll!__tailMerge_MyDelayLoadDLL_dll() + 0x3f bytes Unknown
MYDLL.dll!MyUserFunction() Line 91 + 0x5 bytes C++
Den c++ - Anwendung ist mit Verzögerung Laden DLL zu laden .NET-code.
Dem computer, auf dem der Absturz Auftritt, ist eine sehr leistungsfähige Maschine (12 CPU-Kerne, 48 gig ram), ich bin nicht sicher, ob es einen Einfluss auf Sie. Aber seit dem crash nicht passieren die ganze Zeit, es sieht aus wie eine race-Bedingung, oder das Ressourcen-Problem.
Dieser forum thread beschreibt mein Fall, aber es gibt keine Lösung.
Irgendeine Idee warum das passieren kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe diese gleiche Absturz an meiner Anwendung, und der callstack ist genau das gleiche zu.
Aber mein crash ist anders, dass eine native-DLL hat eine Verzögerung, Last, Abhängigkeit von anderen native DLL.
Ich würde niemals Verzögerung laden .NET-assembly. .NET-assemblies geladen werden sollen, mithilfe der verwalteten assembly loader Funktionen. Sie sollten auch nicht geladen werden, durch aufrufen von LoadLibrary auf Sie.
In das Ende, ich bin mir nicht sicher, was den Absturz verursacht, aber ich würde das entfernen verzögert laden zusammen für ein .NET-assembly.
Ich hatte dieses problem als ich versuchte, führen Sie eine debug-version von meinem Programm auf einem anderen Computer, der NICHT über die debug-version der Visual-Studio-C++ runtimes auf dem Rechner. (Die debug-dlls sind oft den Namen ein wenig anders, ein zusätzliches "D" irgendwo in der assembly-name)
Den release-Konfiguration von meinem Programm geklappt, da hatte ich das redistributable VS C++ runtimes drauf.
Vollständigkeit halber, werde ich die offensichtliche Antwort auf diese Frage, aber ich bin aufrichtig don ' T bedeuten für Sie scheinen herablassend... Das Modul loader nicht finden konnte, ein Modul, dass es abhängig war! Je mehr ich beheben, Sachen wie diese, ich sage mir, mehr und mehr zu glauben, "die Fehler-Meldung"
Dependency Walker (depends.exe) sollte dein Freund in diesem Fall, zwar kann ich nicht mit Sicherheit sagen, wie es befasst sich mit Verzögerung geladenen Module.