相关疑难解决方法(0)

未定义的_unwind_resume和__gxx_personality_v0引用

我正在尝试使用JsonCpp库.我在Windows上,使用MinGW和CodeBlocks.

当我在json头中包含任何内容时,我的链接器会崩溃并发出这两个错误.我已经开始环顾四周了,我发现了另外两个基本上描述我问题的问题:

g ++和"未定义引用`__gxx_personality_v0'"的问题

什么是__gxx_personality_v0?

如果我将两个缺失的变量声明为void指针,如下所示,则问题就会消失:

void * __gxx_personality_v0=0;
void * _Unwind_Resume =0;
Run Code Online (Sandbox Code Playgroud)

但是,我不明白为什么会发生这种错误.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;
}
Run Code Online (Sandbox Code Playgroud)

只有当我包含/使用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 …
Run Code Online (Sandbox Code Playgroud)

c++ mingw exception

11
推荐指数
2
解决办法
3万
查看次数

尝试将Qt app与我的静态库链接时未定义的引用

我有一个用MinGW构建的静态库,我试图从Qt应用程序链接到该库.我不断收到由库中的一个目标文件引起的链接器错误.这个文件实际上声明了几个Boost头文件,一个用于使用shared_ptr,另一个用于使我可以使类不可复制.我相信使用这个提升功能是导致问题的原因,但我不知道为什么.如果我在Qt应用程序中注释掉使用文件中定义的类的类,那么Qt应用程序链接正常.这是输出的错误部分:

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x10a):未定义引用`__gxx_personality_sj0'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x12f):未定义引用`_Unwind_SjLj_Register'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x203):未定义引用`_Unwind_SjLj_Resume'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x20e):未定义引用`_Unwind_SjLj_Unregister'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x226):未定义引用`__gxx_personality_sj0'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x24b):未定义引用`_Unwind_SjLj_Register'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x31f):未定义引用`_Unwind_SjLj_Resume'

C:\ blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(.text + 0x32a):未定义引用`_Unwind_SjLj_Unregister'

C:\等等\建立\ WINDOWS\MinGW的\ libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(文字$ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [升压::详细:: SHARED_COUNT :: SHARED_COUNT(富:: foo_SomeClassImpl*)] + 0xc):未定义对`__gxx_personality_sj0'的引用

C:\等等\建立\ WINDOWS\MinGW的\ libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(文字$ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [升压::详细:: SHARED_COUNT :: SHARED_COUNT(富:: foo_SomeClassImpl*)] + 0x31):对`_Unwind_SjLj_Register'的未定义引用

C:\等等\建立\ WINDOWS\MinGW的\ libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp :(文字$ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [升压::详细:: SHARED_COUNT :: SHARED_COUNT(富:: foo_SomeClassImpl*)] + 0xfb):对`_Unwind_SjLj_Resume'的未定义引用

C:\等等\建立\ WINDOWS\MinGW的\ libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp …

qt boost mingw cmake undefined-reference

6
推荐指数
1
解决办法
9069
查看次数

fedora上的gcc链接器错误:未定义的引用

我正在尝试在Fedora/gcc上编译/运行我的程序(在Windows/MSVC上运行正常).编译现在很好,链接似乎是一个问题.基于症状和这篇文章未定义的对`__gxx_personality_sj0的引用,在我看来问题可能是编译器/链接器拱类型中的一些不匹配.无论如何,我不是专家

  • 我刚刚卸载了yum list | egrep gcc|g++|c++使用yum remove和发现的所有内容
  • 然后跑了yum install gcc gcc-c++.

笔记:

  • 您在下面看到的所有输出都是上面的步骤.
  • gcc输出的最后一行是: collect2: ld returned 1 exit status
  • 代码是编译干净,没有警告/错误.
  • 几乎所有未定义的引用都是名称中的 namespace std
  • 我只有一个源文件Main.C(和2个标题).

我试图提供我能想到的所有信息,如果您需要更多信息,请告诉我.

[root@myTestMachine kash]# ls -Altr
total 44K
-rw-r--r--. 1 root root 3.5K Sep 11 11:34 .bashrc
-rw-r--r--. 1 root root 2.6K Sep 11 13:50 MyCommon.h
-rw-r--r--. 1 root root 3.5K Sep 11 14:01 Main.cpp
-rw-r--r--. 1 root root  26K Sep 11 14:02 sort.h …
Run Code Online (Sandbox Code Playgroud)

c++ linker fedora

0
推荐指数
1
解决办法
1824
查看次数

标签 统计

c++ ×2

mingw ×2

boost ×1

cmake ×1

exception ×1

fedora ×1

linker ×1

qt ×1

undefined-reference ×1