C++ 链接错误“;未定义对“个性”的引用&引用;和g++;
可能重复:C++ 链接错误“;未定义对“个性”的引用&引用;和g++;,c++,g++,C++,G++,可能重复: 我对以下程序有问题 // fkt.cpp #include "fkt.h" int add2(int a, int b) { return a+b; } 和标题: // fkt.h int add2(int a, int b); 现在,我用以下方法编译: g++ -c fkt.cpp 现在我运行nm并获得: 00000000 T _Z6add2ii U __gxx_personality_v0 当我想在任何地方使用该功能时: (.eh_fra
我对以下程序有问题
// fkt.cpp
#include "fkt.h"
int add2(int a, int b)
{
return a+b;
}
和标题:
// fkt.h
int add2(int a, int b);
现在,我用以下方法编译:
g++ -c fkt.cpp
现在我运行nm
并获得:
00000000 T _Z6add2ii
U __gxx_personality_v0
当我想在任何地方使用该功能时:
(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
我怎样才能解决这个问题?(我正在使用Linux。)听起来好像您正试图用
gcc
而不是g++
链接生成的对象文件:
<>注意使用C++对象的程序
文件必须始终与g++链接,
为了提供适当的C++
图书馆。尝试链接C++
对象文件和C编译器gcc
将导致“未定义引用”
C++标准库的错误
职能:
来源:如果
g++
仍然出现错误,请尝试使用:
g++ file.c -lstdc++
请看这篇文章:
确保
-lstdc++
位于命令末尾。如果将其放在开头(即file.c之前),仍然会出现相同的错误。我们可以看到您用来链接的命令行吗?(你应该使用g++
来做链接,如果你还没有这样做的话。)你试过g++ftk.cpp-o ftk
?我用ghc点链接(使用FFI)当我忘记在Makefile中将gcc
更改为g++
时出现了这个错误……哈哈;)在这种情况下,您切换到gcc是什么意思?我不知道-lstdc++是什么,但它帮助我编译了jni项目的.so库。ThanksIt链接了cpp标准库。他确定他调用的是g++而不是gcc吗?--他不应该手动添加-lstdc++。在使用时发生在我身上,因为它默认使用gcc,而不是g++。解决方案是指定编译器distcc g++[…]
adding-fno threadsafe statics,在使用Arduino草图时为我解决了这个问题。
g++ file.c -lstdc++