15 Stimmen

Undefinierter Verweis auf _Unwind_Resume und __gxx_personality_v0

Ich versuche, die JsonCpp-Bibliothek zu verwenden. Ich bin auf Windows, mit MinGW und CodeBlocks.

Wenn ich irgendetwas aus den Json-Headern einfüge, implodiert mein Linker und gibt diese beiden Fehler aus. Ich habe begonnen, um zu suchen, und ich fand diese zwei anderen Fragen, die im Grunde mein Problem beschreiben:

Problem mit g++ und "undefinierte Referenz auf `__gxx_personality_v0'"

Wofür ist __gxx_personality_v0?

Und wenn ich die beiden fehlenden Variablen als void-Zeiger deklariere, wie unten, verschwindet das Problem:

void * __gxx_personality_v0=0;
void * _Unwind_Resume =0;

Ich verstehe jedoch nicht, warum dieser Fehler auftritt. CodeBlocks ist so eingestellt, dass es migw32-g++ für cpp-Dateien verwendet, und auch das Hinzufügen der Option -lstdc++ behebt das Problem nicht. Genauso wenig wie die Option -fno-exception (ich will Ausnahmen, wohlgemerkt, ich habe es nur versucht).

Ich schließe auch eine Boost-Bibliothek in dieselbe Datei ein, und das verursacht keine Probleme.

EDITAR:

Die Fehlerausgabe ist genau das, was ich in meinem Titel sagte: Ich erhalte insgesamt 22 undefinierte Referenzen auf _Unwind_Resume und __gxx_personality_v0 während der Verknüpfung. Mein Code ist:

#include <boost/algorithm/string.hpp>
#include <include/json/value.h>
//void * __gxx_personality_v0=0;
//void * _Unwind_Resume =0;
int main () {
    std::string str1("Hello world!");
    boost::to_upper(str1);
    Json::Value k;
    return 0;
}

Der Fehler tritt nur auf, wenn ich die JsonCPP-Bibliothek einbinde/verwende. Wenn ich die kommentierten Zeilen auskommentiere, ist das Problem behoben.

Die Befehlszeilenausgabe lautet wie folgt:

mingw32-g++.exe -Wall -fexceptions  -g  -DSFML_DYNAMIC   -IC:\Users\Svalorzen\Documents\Projects\boost_1_49 -IC:\Users\Svalorzen\Documents\Projects\jsoncpp-src-0.5.0 -IC:\Users\Svalorzen\Documents\Projects\SFML-1.6\include -IC:\Users\Svalorzen\Documents\Projects\hge181\include  -c C:\Users\Svalorzen\Documents\Projects\test\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -LC:\Users\Svalorzen\Documents\Projects\jsoncpp-src-0.5.0 -LC:\Users\Svalorzen\Documents\Projects\SFML-1.6\lib -LC:\Users\Svalorzen\Documents\Projects\hge181\lib  -o bin\Debug\test.exe obj\Debug\main.o   -fno-exceptions -lsfml-graphics -lsfml-window -lsfml-system  C:\Users\Svalorzen\Documents\Projects\jsoncpp-src-0.5.0\libs\mingw\libjson_mingw_libmt.a C:\Users\Svalorzen\Documents\Projects\hge181\lib\gcc\libhge.a C:\Users\Svalorzen\Documents\Projects\hge181\lib\gcc\libhelp.a 
Output size is 1.22 MB
Process terminated with status 0 (0 minutes, 3 seconds)
0 errors, 0 warnings

ZWEITE ÄNDERUNG: Ich füge die Befehlszeilen hinzu, die ich zum Kompilieren der Bibliothek verwende:

g++ -o buildscons\mingw\src\lib_json\json_reader.o -c -DWIN32 -DNDEBUG -D_MT -Iinclude src\lib_json\json_reader.cpp
g++ -o buildscons\mingw\src\lib_json\json_value.o -c -DWIN32 -DNDEBUG -D_MT -Iinclude src\lib_json\json_value.cpp
g++ -o buildscons\mingw\src\lib_json\json_writer.o -c -DWIN32 -DNDEBUG -D_MT -Iinclude src\lib_json\json_writer.cpp
ar rc buildscons\mingw\src\lib_json\libjson_mingw_libmt.a buildscons\mingw\src\lib_json\json_reader.o buildscons\mingw\src\lib_json\json_value.o buildscons\mingw\src\lib_json\json_writer.o
ranlib buildscons\mingw\src\lib_json\libjson_mingw_libmt.a

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X