Intento utilizar la biblioteca JsonCpp. Estoy en Windows, usando MinGW y CodeBlocks.Referencia indefinida a _unwind_resume y __gxx_personality_v0
Cuando incluyo algo de los encabezados json, mi enlazador implosiona y muestra estos dos errores. He empezado a mirar a su alrededor y me encontré con estas otras dos preguntas que básicamente describen mi problema:
problem with g++ and "undefined reference to `__gxx_personality_v0'"
What is __gxx_personality_v0 for?
Y si declaro las dos variables que faltan como punteros void, como a continuación, la el problema desaparece:
void * __gxx_personality_v0=0;
void * _Unwind_Resume =0;
Sin embargo, no entiendo por qué ocurre este error. CodeBlocks está configurado para que use migw32-g ++ para archivos cpp, y también agregar la opción -lstdC++ no soluciona el problema. Tampoco lo hace la opción -fno-exception (quiero excepciones, claro, solo lo estaba intentando).
También incluyo una biblioteca de impulso en el mismo archivo y eso no causa ningún problema.
EDIT:
La salida de error es exactamente lo que dije en mi título: recibo un total de 22 referencias indefinidas a _Unwind_Resume y __gxx_personality_v0 durante la vinculación. Mi código es:
#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;
}
El error aparece solo cuando incluyo/uso la biblioteca JsonCPP. Descomentar las líneas comentadas corrige el problema.
La salida de línea de comandos es la siguiente:
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
SEGUNDA EDICIÓN: estoy añadiendo las líneas de comando que utilizo para compilar la biblioteca:
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
Por favor, aclare su pregunta. Puede ayudar mostrar la salida de error real. – Jerry
¿Tiene la salida del compilador? ¿Cuáles son las líneas de comando del compilador y el enlazador? – jpalecek
¿Está vinculado con 'gcc' o' g ++ '? Tenga en cuenta que su solución provocará una desreferencia nula y un accidente desagradable en tiempo de ejecución cuando se lanza una excepción. – rubenvb