我在linux中使用eclipse来开发一个c ++应用程序,我从以下代码行得到了这个编辑器注释错误“Symbol'vector'无法解析”
std::vector<unsigned char> buffer;
我觉得某些库缺失或路径未设置。我明确下载了STL,但没有用。我是否必须在我的Linux上重新安装GCC?
答案 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。
(见图)
希望它有所帮助!
答案 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
解决了这个问题:
答案 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; 解决了我的问题