相关疑难解决方法(0)

什么是__gxx_personality_v0?

这是来自操作系统开发网站的二手问题,但它让我很好奇,因为我无法在任何地方找到合适的解释.

使用gcc编译和链接独立的C++程序时,有时会出现这样的链接器错误:

out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)

这显然是因为这个符号是在libstdc ++中定义的,它在独立环境中是缺失的.解决问题只需要在某处定义此符号:

void *__gxx_personality_v0;
Run Code Online (Sandbox Code Playgroud)

这很好,但我不喜欢那些神奇地工作的东西......所以问题是,这个符号的目的是什么?

c++ linker gcc kernel

98
推荐指数
5
解决办法
9万
查看次数

链接上的未定义符号___gxx_personality_v0

我用这个命令行得到了这个未定义的符号构建:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:
  etc...
Run Code Online (Sandbox Code Playgroud)

test.cpp很简单,应该很好.这笔交易是什么?

c c++ gcc g++

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

未定义的_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万
查看次数

在 Rust 上链接 C++:对“operator delete(void*)”和“__gxx_personality_v0”的未定义引用,缺少 libstdc++?

我正在尝试构建一个 cpp cmake 项目并链接到我的 Rust 项目。

cmake_minimum_required(VERSION 3.0)
set (CMAKE_CXX_STANDARD 17)
project(ZLMediaKit_LIB CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")

set(ENABLE_TESTS OFF FORCE)
option(ENABLE_TESTS OFF)

set(ENABLE_OPENSSL FALSE FORCE)
option(ENABLE_OPENSSL OFF)

add_subdirectory(ZLMediaKit)

add_library(libzlmediakit_cpp_interface STATIC interface.cpp)
target_include_directories(libzlmediakit_cpp_interface PUBLIC 
. 
${CMAKE_CURRENT_SOURCE_DIR}/ZLMediaKit/src 
${CMAKE_CURRENT_SOURCE_DIR}/ZLMediaKit/3rdpart/ZLToolKit/src)
target_link_libraries(libzlmediakit_cpp_interface zlmediakit zltoolkit mpeg mov flv libstdc++)
install(TARGETS libzlmediakit_cpp_interface DESTINATION .)
Run Code Online (Sandbox Code Playgroud)

这是我的build.rs

extern crate cmake;
use cmake::Config;

fn main()
{
    let dst = Config::new("zlmediakit_lib").build();       

    println!("cargo:rustc-link-search=native={}", dst.display());
    println!("cargo:rustc-link-lib=static=libzlmediakit_cpp_interface");    
}
Run Code Online (Sandbox Code Playgroud)

但我收到未定义的参考错误:

ong)':
          /usr/include/c++/9/ext/new_allocator.h:128: undefined reference to `operator delete(void*)'
          /usr/bin/ld: /home/dev/orwell/liborwell_rust/zlmediakit_rust/target/debug/build/zlmediakit_rust-499cc82f14515635/out/liblibzlmediakit_cpp_interface.a(interface.cpp.o): in function `ZLRTSPClient::~ZLRTSPClient()':
          /home/dev/orwell/liborwell_rust/zlmediakit_rust/zlmediakit_lib/ZLRTSPClient.h:14: undefined …
Run Code Online (Sandbox Code Playgroud)

cmake rust

5
推荐指数
1
解决办法
898
查看次数

标签 统计

c++ ×3

gcc ×2

c ×1

cmake ×1

exception ×1

g++ ×1

kernel ×1

linker ×1

mingw ×1

rust ×1