错误,无法解析符号'vector'

时间:2011-08-08 09:36:47

标签: c++ linux eclipse

我在linux中使用eclipse来开发一个c ++应用程序,我从以下代码行得到了这个编辑器注释错误“Symbol'vector'无法解析”

std::vector<unsigned char> buffer;

我觉得某些库缺失或路径未设置。我明确下载了STL,但没有用。我是否必须在我的Linux上重新安装GCC?

12 个答案:

答案 0 :(得分:18)

在Eclipse中,右键单击项目名称...选择Index ... Rebuild。

答案 1 :(得分:4)

我有同样的问题。我认为问题源于std :: autocompletion如何更新。 Eclipse应该从Path和Symbols中获取它,但它可能是错误的。升级gcc后我必须清理所有Eclipse设置(因此,g ++),因为你在Linux中它位于你的主文件夹下〜/ .eclipse /.

因此,

1)清理〜/ .eclipse /后重新启动Eclipse。

2)检查路径和符号(右键单击项目&gt; General&gt;路径和符号)包括所有已升级的gcc和c ++包含目录(向量应位于./gcc/version/include/c++/下版本/)

3)重建索引。

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

5)根据需要重建索引和/或重启几次,现在我可以在std :: autocompletion结束时看到vector。

enter image description here(见图)

希望它有所帮助!

答案 2 :(得分:3)

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

#include <vector>

位于文件顶部,应该可以正常工作。

答案 3 :(得分:2)

另请参阅相关问题:Eclipse CDT: Symbol 'cout' could not be resolved

对我来说,问题是在#include <vector>某个地方#include <bits/c++config>的包含路径与#include <vector>不同

即:/usr/include/c++/4.6/x86_64-linux-gnu

答案 4 :(得分:1)

#include<vector>

应该包括在最上面。

答案 5 :(得分:1)

#include <vector>

另外,std :: vector是模板类型,所以你必须像

一样使用它
std::vector<char> buffer;

答案 6 :(得分:1)

  

我觉得某些库缺失或路径未设置。

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

  

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

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

  

我是否必须在我的Linux上重新安装GCC?

可能是明智的。让这个安装处理标准库。

此外,如果您正在使用编译命令行,请记得调用g++ 而不是 gcc; g++自动链接C ++运行时和stdlib实现,而gcc是为C设计的。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

我知道这个问题已经解决了,但它仍然是Google的最佳结果。

Eclipse Neon 用于 Linux 我使用 Quick Fix 解决了这个问题:

  • 右键单击编辑器中的“vector”,
  • 然后“快速修复”

答案 9 :(得分:0)

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

在我的系统上,我必须为要解析的/usr/include/c++/4.6/x86_64-linux-gnu添加bits/c++config.h以及更多目录。

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

答案 10 :(得分:0)

显然,vector从MinGW的角度来看属于C ++标准模板库。所以除了

 #include <vector>

添加

using namespace std;

在头文件包含之后。

答案 11 :(得分:-1)

添加 #include&lt; vector&gt; 使用命名空间std; 解决了我的问题