繁体   English   中英

使用Eclipse链接C ++项目时出现未定义的符号错误

[英]Undefined symbol errors when linking of C++ project using Eclipse

我编译了一个从另一个项目移植的C ++项目,在编译后链接时有一些未定义的符号警告。 关键是这些警告太奇怪了。 它们分为两种类型:

类型1:

dld: warning: Undefined symbol **'__record_needed_destruction'** in file './xxx/xx.o'
dld: warning: Undefined symbol **'__memzero'** in file './xxx/xyy.o'
dld: warning: Undefined symbol **'__vec_delete'** in file './xxx/xyz.o'
dld: warning: Undefined symbol **'__vec_new'** in file './xxx/yy/xxx/yyy.o'
dld: warning: Undefined symbol **'__pure_virtual_called'** in file './xxx/zzz.o'

关键是这些符号未在源代码中使用。 什么是战争的确切手段?

类型2:

dld: warning: Undefined symbol in file './xxx/x1.o', './xxx/x2.o', './xxx/x3.o':
    nothrow__3std
    **std::nothrow**

源代码如下:

ApplicationSystem* pApplicationSystem = **new(std::nothrow)** ApplicationSystem{
.....
.....
}

类似的语句出现在3个cpp文件中。使用std :: nothrow有什么问题吗?

在编译器构建目标文件(.o)之后,链接器需要链接它们并用库中的地址替换所有符号名称(例如函数调用)。 但在你的情况下,他无法解决这个地址。

看来你还没有在库中提到过stdc ++。

可能需要将项目类型设置为C ++,或者将编译器名称设置为g ++而不是gcc,或者将参数-lstdc ++添加到命令行eclipse用于构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM