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