【问题标题】:error , Symbol 'vector' could not be resolved错误,符号“向量”无法解析
【发布时间】:2011-10-22 06:02:36
【问题描述】:

我在 linux 中使用 eclipse 开发一个 c++ 应用程序,我从以下代码行中收到此编辑器注释错误“无法解析符号'向量'”

std::vector<unsigned char> buffer;

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

【问题讨论】:

  • 我怀疑问题在于您“明确下载了 STL”,这不是必需的,也许您当时犯了一些错误。
  • 如果未设置路径,您应该在#include &lt;vector&gt; 上收到错误消息。您的输出中的 first 错误是什么?
  • 您是否尝试在 Eclipse 之外使用 gcc 或 cc 来链接包含矢量的 Hello World c++ 文件?我会试一试。

标签: c++ linux eclipse


【解决方案1】:

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

#include <vector>

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

【讨论】:

  • 我已经把它放在了顶部,但没有用
  • Err.. 如果您要对帖子投反对票,至少有礼貌地解释原因...
  • 再一次..这篇文章现在已经有一年了..答案是完全合理的,如果没有 OP 的任何进一步回应,我真的无能为力来改进它。所以如果你要投反对票,我很想知道为什么?!?
  • @StevieG 如果出现 compilation 错误,您的答案可能是正确的。但是 op 声明他遇到了 annotation 错误。这是 eclipse 的一个特定问题,因为它使用不同的代码扫描器来执行注释任务。我有类似 op 的问题,我的代码正在编译和链接,但 eclipse 仍然会弄乱标准模板库。
【解决方案2】:
#include<vector>

应该包含在顶部。

【讨论】:

    【解决方案3】:
    #include <vector>
    

    另外,std::vector 是模板类型,所以你必须像使用它一样

    std::vector<char> buffer;
    

    【讨论】:

      【解决方案4】:

      感觉有些库缺失或者路径没有设置。

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

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

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

      我必须在我的 linux 上重新安装 GCC 吗?

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 仅供参考 - 与刷新不同(我认为是)。
        【解决方案6】:

        我遇到了同样的问题。我相信问题出在 std:: 自动完成的更新方式上。 Eclipse 应该从路径和符号中得到这个,但它可能是错误的。升级 gcc(因此,g++)后,我必须清理所有 Eclipse 设置,因为您在 Linux 中,它位于您的主文件夹 ~/.eclipse/ 下。

        因此,

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

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

        3) 重建索引。

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

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

        (见图)

        希望对你有帮助!

        【讨论】:

        • 我认为这个答案是正确的。这个问题与另一个已解决的帖子有关:stackoverflow.com/questions/10803685/…。我用与@wgodoy 解释的类似程序解决了这个问题(使用提到的帖子)。
        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          另见相关问题:Eclipse CDT: Symbol 'cout' could not be resolved

          对我来说,问题是在 #include &lt;vector&gt; 某处有 #include &lt;bits/c++config&gt;#include &lt;vector&gt; 具有不同的包含路径

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

          【讨论】:

            【解决方案9】:

            添加 #includeusing namespace std; 解决了我的问题

            【讨论】:

              【解决方案10】:

              我知道这个问题已经解决了,但它仍然在 Google 上显示为最高结果。

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

              • 在编辑器中右击“矢量”,
              • 然后“快速修复”

              【讨论】:

                【解决方案11】:

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

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

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

                【讨论】:

                  【解决方案12】:

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

                   #include <vector>
                  

                  添加

                  using namespace std;
                  

                  在头文件包含之后。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-24
                    • 2019-12-30
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-08-25
                    • 2023-03-03
                    相关资源
                    最近更新 更多