Mein Programm wird mit dem Code '62097' beendet (oder in Hex 0xF291). Ich weiß, welche DLL-Bibliothek dafür verantwortlich ist, und ich versuche herauszufinden, warum sie durcheinander bringt.
Was bedeutet 62097? Wie kann ich das herausfinden? Ich habe im Internet nachgeschaut, und so weit ich sehen kann, gehen generische Windows-Fehlercodes nicht bis 62097.
Haben Sie sonst noch Vorschläge, wie ich das Problem debuggen kann? Ich benutze Dependency Walker auf der DLL, die Ärger verursacht, aber alles ist in Ordnung, abgesehen von den fehlenden IESHIMS.dll, IEFRAME.dll und SHLWAPI.dll (die normalerweise fehlen, wenn ich Dependency Walker benutze).
Die betroffene Bibliothek ist eine Bibliothek eines Drittanbieters, die ich selbst kompiliert habe - es ist durchaus möglich, dass ich sie falsch kompiliert habe - wie kann ich feststellen, ob das der Fall ist?
Das Programm weigert sich, zu laufen, bevor es main() erreicht, aber nur, wenn ich eine Klasse aus der DLL importiere. Wenn ich nichts aus der DLL benutze, startet das Programm einwandfrei.
Das Programm läuft technisch gesehen "bereits", aber im Hintergrund, bevor der Code jemals bei mir ankommt. Es handelt sich nicht um einen Konstruktor einer Klasse, denn ich habe versucht, so etwas zu tun:
dllKlasse *klasse = new dllKlasse;
Und das gleiche ist passiert, bevor die Ausführung das 'new' erreichte, also kann es kein Konstruktor mit einer Endlosschleife oder ähnliches sein. Es läuft als Prozess und befindet sich nicht im Zustand "Reagiert nicht".
Ich benutze MinGW unter Windows 7 32bit. Was kann ich tun, um das zu diagnostizieren? Ich schätze jede Einsicht, die Sie anbieten können; währenddessen versuche ich, ein paar weitere Gedanken zu verfolgen und hoffe, dass ich das Problem weiter eingrenzen kann.
1 Stimmen
Hat die vermutete dll eine
DllMain
? Sind alle Binärdateien 32-Bit? Abgesehen davon scheint es, als ob einige statische Initialisierungen, die beim Laden der dll durchgeführt werden, fehlschlagen.1 Stimmen
Können Sie versuchen, die Bibliothek statisch zu verlinken, anstatt sie in eine DLL umzuwandeln?
0 Stimmen
Ich habe die Bibliothek als Teil des Projekts kompiliert, das sie benutzt hat, und es funktioniert. Allerdings scheint es, dass wenn ich mein Programm zu früh nach dem Starten beende, manchmal eine Ausnahme geworfen wird. Da es jetzt ein Teil meines Projekts selbst ist, kann ich es mit einem Debugger und Breakpoints durchgehen und das Problem finden. Ich weiß nicht, warum ich nicht früher daran gedacht habe! Vielen Dank für die Tipps, meine Herren! =) Ich wette, der Fehlercode hat etwas damit zu tun, Ausnahmen über DLL-Grenzen hinweg zu werfen.
0 Stimmen
Ich erhalte dies, wenn der Versuch, Speicher zuzuweisen, fehlschlägt.