链接错误"未定义引用`__gxx_personality_v0'"和g ++

dev*_*vel 73 c++ g++

可能重复:
链接上的未定义符号___gxx_personality_v0

我有以下程序的问题.

// fkt.cpp

#include "fkt.h"

int add2(int a, int b)
{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

标题:

// fkt.h

int add2(int a, int b);
Run Code Online (Sandbox Code Playgroud)

现在我编译它:

g++ -c fkt.cpp
Run Code Online (Sandbox Code Playgroud)

现在我跑了nm,得到:

00000000 T _Z6add2ii
         U __gxx_personality_v0
Run Code Online (Sandbox Code Playgroud)

当我想在任何地方使用该函数时:

(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?(我正在使用Ubuntu Linux.)

pho*_*xis 113

如果g++仍然出错请尝试使用:

g++ file.c -lstdc++
Run Code Online (Sandbox Code Playgroud)

看看这篇文章:什么是__gxx_personality_v0?

确保-lstdc++在命令的末尾.如果将它放在开头(即在file.c之前),您仍然可以得到同样的错误.

  • 它链接cpp标准库. (4认同)
  • 他确定他调用的是 g++ 而不是 gcc 吗?-- 他不应该手动添加 -lstdc++。 (3认同)

ont*_*ia_ 63

听起来你正试图用你的结果对象文件链接,gcc而不是g++:

请注意,使用C++目标文件的程序必须始终与g ++链接,以便提供适当的C++库.尝试将C++目标文件与C编译器gcc链接将导致C++标准库函数出现"未定义的引用"错误:

$ g++ -Wall -c hello.cc
$ gcc hello.o       (should use g++)
hello.o: In function `main':
hello.o(.text+0x1b): undefined reference to `std::cout'
.....
hello.o(.eh_frame+0x11):
  undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)

来源:GCC简介 - 用于GNU编译器gcc和g ++