Undefinierte Referenzen beim Versuch, die Qt-App mit meiner statischen Bibliothek zu verknüpfen

Ich habe eine statische Bibliothek, die ich mit MinGW erstellt habe. Ich versuche, aus einer Qt-Anwendung eine Verknüpfung zu dieser Bibliothek herzustellen. Ich erhalte ständig Linker-Fehler, die durch eine der Objektdateien in der Bibliothek verursacht wurden. Diese Datei deklariert tatsächlich ein paar Boost-Header, einen für shared_ptr und den anderen, damit eine Klasse nicht kopiert werden kann. Ich glaube, dass die Verwendung dieser Boost-Funktion das Problem verursacht, aber ich habe keine Ahnung, warum. Wenn ich die Klassen in der Qt-App auskommentiere, die die in der Datei definierte Klasse verwenden, wird die Qt-App ordnungsgemäß verknüpft. Dies ist der Fehlerteil der Ausgabe:

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x10a): undefinierter Verweis auf `__gxx_personality_sj0 '

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x12f): undefinierter Verweis auf "_Unwind_SjLj_Register"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x203): undefinierter Verweis auf "_Unwind_SjLj_Resume"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x20e): undefinierter Verweis auf "_Unwind_SjLj_Unregister"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x226): undefinierter Verweis auf `__gxx_personality_sj0 '

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x24b): undefinierter Verweis auf "_Unwind_SjLj_Register"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x31f): undefinierter Verweis auf "_Unwind_SjLj_Resume"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x32a): undefinierter Verweis auf "_Unwind_SjLj_Unregister"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0xc): undefinierter Verweis auf `__gxx_personality_sj0 '

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x31): undefinierter Verweis auf "_Unwind_SjLj_Register"

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0xfb): undefinierter Verweis auf `_Unwind_SjLj_Resume '

C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. Text + 0x106): undefinierter Verweis auf `_Unwind_SjLj_Unregister 'collect2: ld hat 1 Exit-Status zurückgegeben

Eine andere Sache zu erwähnen ist, dass ich einen Zeiger auf die Implementierung in dieser Klasse verwende. Jede Hilfe wäre sehr dankbar.

Behoben: Ich fand heraus, dass ich eine ältere Version von GCC in meinem Pfad hatte, die nicht enthalten war, bevor meine MinGW GCC-Version lieferte. Die alte Version war in einem GNUStep-Paket enthalten, das ich vor einiger Zeit hatte. Ich denke, dass die Konfiguration dieser verschiedenen Versionen Probleme verursacht hat. Vielen Dank an kemiisto, der das Problem auf dem richtigen Weg gelöst hat.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage