Undefined reference to _Unwind_Resume and __gxx_personality_v0
c++, exception, mingw
Solution
I finally fixed this by importing into Code::Blocks the source code of JsonCpp and creating the library myself. I am still baffled though as to why the library created with Scons didn't work, since it was using the same compiler that Code::Blocks uses, but at the same time it was not ( or the error wouldn't have been there ).
Problem
I'm trying to use the JsonCpp library. I'm on Windows, using MinGW and CodeBlocks. When I include anything from the json headers, my linker implodes and gives out this two errors. I've started to look around and I found these two other questions which basically describe my problem: problem with g++ and "undefined reference to `__gxx_personality_v0'" What is __gxx_personality_v0 for? And if I declare the two missing variables as void pointers, like below, the problem goes away: ``` void * __gxx_personality_v0=0; void * _Unwind_Resume =0; ``` However, I don't understand why this error happens. CodeBlocks is set up so that it uses migw32-g++ for cpp files, and also adding the -lstdc++ option does not fix the problem. Neither does the option -fno-exception ( I want exceptions, mind you, I was just trying ). I'm also including a boost library in the same file and that does not cause any problems. EDIT: The error output is exactly what I said in my title: I get a total of 22 undefined references to _Unwind_Resume and __gxx_personality_v0 during the linking. My code is: ``` #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; } ``` The error is there only when I include/use the JsonCPP library. Uncommenting the commented lines fixes the problem. The command line output is this: ``` 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 ``` SECOND EDIT: I'm adding the command lines I use to compile the library: ``` 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 ```