我正在尝试使用JsonCpp库。我在Windows上使用MinGW和CodeBlocks。
当我包含json头文件中的任何内容时,我的链接器会崩溃并输出这两个错误。我开始四处寻找,并找到了这两个其他问题,基本上描述了我的问题:
g ++问题和“未定义的引用`__gxx_personality_v0'”
如果我将两个缺少的变量声明为void指针,如下所示,则问题就会消失:
void * __gxx_personality_v0=0;
void * _Unwind_Resume =0;
然而,我不明白为什么会出现这个错误。CodeBlocks被设置为使用migw32-g++处理cpp文件,添加-lstdc++选项也不能解决问题。-fno-exception选项也是一样(我需要异常,但只是试试)。同时,我在同一文件中包含了一个boost库,但并没有引起任何问题。
编辑:
错误输出与标题中所述完全相同:在链接期间,我总共得到了22个对_Unwind_Resume和__gxx_personality_v0的未定义引用。我的代码如下:
#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;
}
当我包含/使用JsonCPP库时,错误就会出现。取消注释的行可以解决问题。
命令行输出如下:
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
第二次编辑:我正在添加我用来编译库的命令行:
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
gcc
还是g++
进行链接?请注意,你的修复方案会在运行时抛出异常时导致空指针引用和令人讨厌的崩溃。 - rubenvb