Ich habe ein seltsames Problem. Namentlich deaktiviert Qt die Ausnahmebehandlung in meinem Programm. Ich kann keine Ausnahme fangen, und wenn ich eine Ausnahme-Anwendung werfe, stürzt ab.
Ich verwende Qt 4.7.0 (32 Bit) von Qt SDK v2010.05 unter Windows 7 (64 Bit), g ++ (GCC) 4.5.1 von MinGW, NetBeans 6.9.1. Aber ich habe dies auch mit g ++ 3.4.5 (ebenfalls von MinGW) und Qt Creator 2.0.1 getestet - dasselbe seltsame Verhalten.
Zum Beispiel (im einfachsten Fall):
%Vor%Wenn ich das obige Programm ausführe, habe ich folgende Ausgabe:
Vor der Ausnahme
Diese Anwendung hat die Runtime aufgefordert, sie auf ungewöhnliche Weise zu beenden.
Bitte kontaktieren Sie das Support-Team der Anwendung für weitere Informationen.
Ich habe versucht, g ++ Flag "-fexceptions" hinzuzufügen, aber es hat nichts geändert.
Wenn ich Qt nicht verwende, ist alles in Ordnung:
%Vor%Die Ausgabe:
Vor der Ausnahme
Ausnahme aufgetreten
Weiß jemand, warum das so geschieht und wie man das repariert? Hat es etwas mit der Art der Ausnahmebehandlungsmethode (SJLJ oder Dwarf-2) zu tun, die verwendet wurde, als Qt erstellt wurde?
Ich habe Qt mit dem Flag -exceptions
neu konfiguriert und neu kompiliert:
D:\Qt10.05\qt>mingw32-make confclean && configure -exceptions && mingw32-make
und jetzt ist alles in Ordnung!
Danke an alle, besonders an Nick D!
Wie auch immer, es ist sehr seltsam, dass ich Qt ohne diese Flagge gebaut habe. Ich hatte Qt SDK in binärer Form von der offiziellen Seite heruntergeladen.