2011-08-08 129 views
17

我正在使用Linux的Eclipse来开发C++应用程序,我得到这个编辑注释错误从下面的代码行“符号‘矢量’无法解析”错误,符号“向量”无法解析

std::vector<unsigned char> buffer; 

我觉得某些库缺失或者路径没有设置。我明确下载了STL,但没用。我需要在我的linux上重新安装GCC吗?

+1

我怀疑问题是你'明确地下载了STL',这不应该是必需的,也许你在这一点上犯了一些错误。 – john

+2

如果路径没有设置,你应该在'#include '上得到一个错误。输出中的* first *错误是什么? – molbdnilo

+0

您是否尝试在eclipse外部使用gcc或cc来链接包含向量的Hello World C++文件?我会给那一枪。 – Sid

回答

2

您需要在程序中包含STL向量定义。把:

#include <vector> 

在你的文件的顶部,它应该工作。

+0

我已经在顶部包含了这个,但没有用处 –

+0

这很奇怪..你可以发布你的命令行吗? – StevieG

+2

Err ..如果你打算downvote一个职位,至少有正派来解释为什么... – StevieG

1
#include<vector> 

应该包含在顶部。

+0

这也不起作用 –

1
#include <vector> 

此外,性病::向量是模板类型,所以你必须使用像

std::vector<char> buffer; 
1

我觉得有些库丢失或路径没有设置。

是的,这听起来像一个链接器错误。 Linkers处理符号。

我明确下载了STL,但没用。

希望你的意思是libstdC++,GNU的C++标准库实现,你可能不应该这样做。您的工具链附带了正确的stdlib实现。

我需要在我的linux上重新安装GCC吗?

大概是明智的。让这个安装处理标准库。另外,关于你正在玩你的编译命令行的机会,请记住调用g++而不是gcc; g++自动链接在C++运行时和stdlib实现中,而gcc是为C设计的。

+0

@UmairZaman:恩? –

18

在Eclipse中,右键单击项目名称...选择索引...重建。

+0

仅供参考 - 与刷新不同(我认为是)。 – Cookster

+0

加入#include 为我工作 –

4

我有同样的问题。我相信问题来自于如何更新std :: autocompletion。 Eclipse应该从Path和Symbols中得到这个,但它可能会有问题。升级gcc(因此,g ++)后,我必须清理所有Eclipse设置,因为你在Linux中,它位于你的home文件夹〜/ .eclipse /下。

因此,

1)清洗〜/ .eclipse /后重新开始的Eclipse。

2)检查路径和符号(右键单击项目>常规>路径和符号)包括所有升级后的gcc和C++包含目录(向量应该在。/ gcc/version/include/C++/version /)

3)重建索引。

4)创建一个* .cpp文件,其中包含错误显示的* .h。这将迫使Eclipse回溯* .h的依赖关系。

5)根据需要重建索引和/或重新启动几次,现在我可以在std :: autocompletion的末尾看到向量。

enter image description here(见图片)

希望它能帮助!

+3

我认为这个答案是正确的。这个问题与这个其他解决的帖子有关:http://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-could-not-be-resolved。我用类似于@wgodoy解释的程序解决了这个问题(使用提到的帖子)。 – jespestana

0

创建一个*.cpp文件,其中包含出现错误的*.h。这将迫使Eclipse回溯*.h的依赖关系。
为我工作...

0

add #include < vector> and using namespace性病;解决了我的问题

0

我知道这个问题已经解决了,但是它出现了,并且Google出现了,并且使用谷歌搜索将此页作为最高结果。

使用Eclipse的霓虹灯Linux的Quick Fix解决它:

  • 右键单击在编辑器 “载体”
  • 然后 “速战速决”
0

很可能你有一些系统特定的包含目录mi在您的设置中进行调用,这使得索引器无法正确分析iostream,从而导致错误。在项目的上下文菜单中选择Index -> Search For Unresolved Includes将为您提供可以在/usr/include中搜索的未解析包含列表,并向项目属性中的C++包含路径和符号添加目录。

在我的系统上,我不得不添加/usr/include/c++/4.6/x86_64-linux-gnu来解决bits/c++config.h以及更多的目录。

不要忘记在添加包含目录后重建索引(索引 - >重建)。

0

显然矢量属于MinGW透视图的C++标准模板库。所以除了

#include <vector> 

添加

using namespace std; 

头文件包含之后。