我在linux中使用eclipse来开发一个c + +应用程序,我得到这个编辑器注释错误“符号”vector“无法解决”从下面的代码行
std::vector<unsigned char> buffer;
我觉得有些库缺失或path没有设置。 我明确下载了STL,但没用。 我需要在我的linux上重新安装GCC吗?
在Eclipse中,右键单击项目名称…选择索引…重建。
我遇到过同样的问题。 我相信问题来自如何更新std :: autocompletion。 Eclipse应该从路径和符号中得到这个,但它可能是越野车。 升级gcc(因此,g ++)后,我必须清理所有的Eclipse设置,因为你在Linux下,它在你的home文件夹〜/ .eclipse /下。
从而,
1)清理后重启Eclipse〜/ .eclipse /。
2)检查路径和符号(右键单击项目>常规>路径和符号)包括所有升级后的gcc和c ++ include目录(向量应该位于./gcc/version/include/c++/version/下)
3)重建索引。
4)创建一个* .cpp文件,其中包括错误显示的* .h。 这将迫使Eclipse回溯* .h的依赖关系。
5)根据需要重建索引和/或重新启动几次,现在我可以看到在std :: autocompletion结尾的向量。
(见图)
希望能帮助到你!
您需要在程序中包含STL向量定义。 放:
#include <vector>
在你的文件的顶部,它应该工作。
另请参见相关问题: Eclipse CDT:Symbol'cout'无法解析
对于我来说,问题是在#include <vector>
某处有#include <bits/c++config>
,它的include路径不是#include <vector>
即:/ /usr/include/c++/4.6/x86_64-linux-gnu
#include<vector>
应该包含在顶部。
#include <vector>
此外,std :: vector是模板类型,所以你必须像使用它
std::vector<char> buffer;
我觉得有些库缺失或路径没有设置。
是的,这听起来像一个链接器错误。 Linkers处理符号。
我明确下载了STL,但没用。
希望你的意思是libstdc ++,GNU的C ++标准库的实现,你可能不应该这样做。 你的工具链带有正确的stdlib实现。
我需要在我的linux上重新安装GCC吗?
大概是明智的。 让这个安装处理标准库。
另外,如果你正在玩你的编译命令行,请记住调用g++
而不是 gcc
; g++
在C ++运行时和stdlib实现中自动链接,而gcc
是为C
创建一个*.cpp
文件,其中包含错误显示的*.h
。 这将迫使Eclipse回溯*.h
依赖关系。
正在为我工作…
添加#include <vector>并使用namespace std; 解决了我的问题
我知道这个问题已经解决了,但是钢铁似乎出现了,Google的搜索结果就是这个页面。
使用Eclipse Neon for Linux我使用Quick Fix
解决了这个问题:
很可能你的设置中缺少一些特定于系统的包含目录,这使得索引器无法正确解析iostream,从而导致错误。 在项目的上下文菜单中选择Index -> Search
未解析的包含,将会给你一个未解析的包含列表,你可以在/usr/include
搜索,并在项目属性中添加包含目录到C ++包含路径和符号。
在我的系统上,我必须添加/usr/include/c++/4.6/x86_64-linux-gnu
bits/c++config.h
来解决和更多的目录。
不要忘记在添加包含目录后重建索引(索引 – >重建)。