Problem mit neuem MinGW (4.5.0) undefined reference to _Unwind_SjLj_Resume



  • Guten Tag!
    Ich führe grade ein Kompilerupdate für ein Projekt durch.
    Allerdings bekomm ich jetzt mit dem neuen Kompilier haufenweise Fehlermeldungen:

    ..\lib\win32\videoInputLib.a(videoInput.o):videoInput.cpp|| undefined reference to `__gxx_personality_sj0'|
    ..\lib\win32\videoInputLib.a(videoInput.o):videoInput.cpp|| undefined reference to `_Unwind_SjLj_Register'|
    ..\lib\win32\videoInputLib.a(videoInput.o):videoInput.cpp|| undefined reference to `_Unwind_SjLj_Unregister'|
    ..\lib\win32\videoInputLib.a(videoInput.o):videoInput.cpp|| undefined reference to `_Unwind_SjLj_Resume'|
    

    Ich benutzt CodeBlocks als IDE.

    Ich habe da schon ne Menge drüber gelesen. Dieses SjLj hat wohl irgendwas mit dem exceptionhandling zu tun, dass wohl von Version 4.4.0 auf 4.5.0 umgestellt wurde (Wenn ich das alles richtig verstanden hab). Hab ich mir also gedacht ich benutzt die 4.4.0er MinGW Version. Da kommen allerdings genau die selben Fehler.

    Wäre dankbar für jeden Input in welche Richtung ich noch was versuchen kann anders zu machen. 🙂

    Viele Grüße



  • An welcher Stelle ist da jetzt ein C++-Problem? Vielleicht wäre ein MinGW-Forum die bessere Anlaufstelle.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht verwendest Du einen Mix aus alter und neuer MinGW-Installation, zB neue Header + alter Compiler oder so etwas. Mir kommen diese Fehler bekannt vor. Ich glaube, ich hatte so etwas auch mal. Wenn ich mich richtig erinnere, war da irgendwas Header/Binary-technisch durcheinander.



  • krümelkacker schrieb:

    Vielleicht verwendest Du einen Mix aus alter und neuer MinGW-Installation, zB neue Header + alter Compiler oder so etwas. Mir kommen diese Fehler bekannt vor. Ich glaube, ich hatte so etwas auch mal. Wenn ich mich richtig erinnere, war da irgendwas Header/Binary-technisch durcheinander.

    Hallo

    Ja sowas hab ich gerade auch schon befürchtet. Also heißt das dann wohl alle Bibliotheken neu kompilieren?



  • Zumindest bei der Installation von 4.5.1 kannst du einstellen (ich glaube bei diesem Fenster mit den vielen Optionen), ob du den GCC mit sjlj- oder dwarf2-Exceptionhandling installieren willst. Verwende dann einfach den sjlj, da deine Bibliotheken damit kompiliert sind, aber die Runtime nur beim sjlj-Compiler die sjlj-Funktionen enthält.

    Ich kenne mich da zwar nicht wirklich aus, aber sjlj steht für Exceptionhandling mit setjmp() und longjmp(), während dwarf2 irgend etwas Betriebssystemabhängiges ist, was AFAIK auch nicht immer vom Compiler unterstützt wird. Dwarf2 hat bei mir die kleinere Binary und verlangsamt die Ausführung anscheinend nur dann, wenn auch tatsächlich eine Exception geworfen wird. (Es wird nicht bei jedem try{} ein setjmp() aufgerufen).


Log in to reply