【问题标题】:"string could not resolved" error in Eclipse for C++ (Eclipse can't resolve standard library)Eclipse for C++ 中的“字符串无法解析”错误(Eclipse 无法解析标准库)
【发布时间】:2011-12-15 20:13:55
【问题描述】:

我在 c++ 的 eclipse 中有以下代码,它在 stringcout 下划线并说无法解决。

#include <string>
#include <iostream>

using namespace std;


int main()
{
    string s;
    s = "hello world";
    cout << s;
    return 0;

}

有人知道为什么吗?

编辑:截图

编辑:我找到了解决方案,谢谢大家(查看答案)。

【问题讨论】:

  • 但是它可以编译并且工作正常,对吧?我自己也遇到过这个问题,我认为这与 eclipse 无法找到您正在使用的工具链的包含目录有关。检查设置。
  • 看看这个,我觉得答案没那么复杂:stackoverflow.com/questions/7433448/…
  • 另一个可能的原因:我忘了安装 g++。例如在 Fedora25 中,dnf install gcc-c++-6.3.1-1.fc25.x86_64 libstdc++-devel-6.3.1-1.fc25.x86_64。然后重建索引。
  • 在 youtube 上遵循 C++ 教程后,我发现您需要以下代码:“using namespace std;”,清理项目,然后重新编译并运行。

标签: c++ eclipse


【解决方案1】:

我也遇到过这个问题。

我发现这是因为 Eclipse 找不到所有包含头。

轻松修复:

这个简单快捷的解决方案可能会解决您的问题(例如,当 Eclipse 项目被移动到磁盘上的不同位置,然后在 Eclipse 中再次导入时),如果没有,请跳转到下一部分(详细修复)。

  1. 转到项目 > 属性 > C/C++ 构建 > 工具链编辑器
  2. 当前工具链更改为任何其他值,点击应用
  3. 当前工具链设置为原始值,点击应用
  4. 编译您的项目

详细修复:

在继续之前检查您的工具链是否已正确安装。

  1. 切换到新工作区。
  2. 删除 .cproject 文件和“.settings”文件夹
  3. 将您的项目导入为 Makefile 项目(或者如果您更喜欢 CDT 构建系统,则只需创建一个新项目)
  4. 转到项目-> 属性->C/C++ 构建->工具链编辑器。选择您的工具链。
  5. 按项目->索引->重建
  6. 如果问题仍未解决,请将系统语言更改为英语,然后重试上述步骤。

过时的答案:

这个答案已经过时了。如果以上都没有帮助,请继续

如果前面的步骤没有帮助,我们需要手动设置包含目录(虽然不推荐)

  1. 使用“右键单击项目 > 索引 > 搜索未解析的包含”搜索所有未解析的标头。
  2. 使用“find /usr/include/ -name vector -print”搜索他们的位置
  3. 将包含文件夹路径放入“右键单击项目 > 属性 > C++ 常规/路径和符号/C++”
  4. 运行“右键单击项目>索引>重建”
  5. 如果还有未解析的符号,请从第 1 步开始。

【讨论】:

  • Eclipse 无法解析标准库:非常感谢 - 正是我想要的。似乎应该有一种更自动化的方式来做到这一点。在 Eclipse 停止抱怨之前,我一直在 /usr/include/c++/4.7.0/i686-pc-linux-gnu/bits/c++config.h 中结束。 Home 其中一些关键词在 google 上的索引很好。
  • 我花了一点时间才找到索引菜单,但是(右键单击项目,下拉到索引)。
  • 天哪,你是个巫师。谢谢!
  • @Barton,你的评论拯救了我的一天...... Tnx!
  • 修改问题标题。
【解决方案2】:

问题是我需要同时安装 minGW and MSYS 并将其添加到 PATH。

问题现已解决。

【讨论】:

    【解决方案3】:

    我刚刚回复了 Vanuan (Eclipse CDT: Unresolved inclusion of stl header) 的相关问题,这是我的回答:

    您也可以尝试使用“CDT GCC 内置编译器设置”。转到项目属性 > C/C++ 常规 > 预处理器包含路径 > 提供程序选项卡 如果不是,请检查“CDT GCC 内置编译器设置”。

    对于“字符串”类型,没有其他解决方案(使用包含路径等)对我有用,但这个解决方案修复了它。

    【讨论】:

      【解决方案4】:

      您需要确保在 Eclipse 中正确设置了您的环境,以便它知道包含的路径。否则,它会将它们下划线表示为未找到。

      【讨论】:

      • 添加了截图。我是新手
      【解决方案5】:

      我遇到了同样的问题。添加包含路径确实适用于除 std::string 之外的所有内容。

      我注意到 mingw-Toolchain 中有很多系统头文件 *.tcc

      我在首选项 > C/C++/ 文件类型中添加了文件类型 *.tcc 作为“C++ 头文件”。 现在 std::string 可以从内部索引和代码分析器中解析出来。 也许这是在特性中默认添加到 Eclipse CDT 中的。

      我希望这对某人有所帮助......

      PS:我使用的是 Eclipse Mars,mingw gcc 4.8.1,Own Makefile,没有 Eclipse Makefilebuilder。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题。将 Properties/C/C++ Build/ToolChainEditor 中的 CurrentBuilder 更改为另一个值并应用它。然后再次将其更改为原始值。有用。

        【讨论】:

          【解决方案7】:

          我在使用 AOSP(clang)时遇到了这个问题。

          external\libcxx\include 添加到包含和_LIBCPP_COMPILER_CLANG 到符号

          【讨论】:

            【解决方案8】:

            你好这里是一个简单的解决方案,

            只需转到文件 -> 转换为 C/C++ Autotools 项目 适当地选择项目文件。

            包含将被添加到您的项目文件中

            【讨论】:

              【解决方案9】:

              在 Linux 上将 ${COMMAND} 设置为 g++

              在“预处理器包括路径、宏等”下。如果您从现有的 Makefile 项目导入源代码,则“CDT GCC 内置编译器设置”有一个未定义的 ${COMMAND} 变量。

              Eclipse 尝试运行该命令来解析其标准输出以查找标头,但默认情况下未设置 ${COMMAND},因此无法这样做。

              我已经在How to solve "Unresolved inclusion: <iostream>" in a C++ file in Eclipse CDT?进行了更详细的解释

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-08-02
                • 2013-10-31
                • 1970-01-01
                • 2013-12-01
                • 1970-01-01
                • 2016-03-21
                相关资源
                最近更新 更多