Eclipse for C ++中的“字符串无法解析”错误(Eclipse无法解析标准库)

时间:2011-10-26 15:29:59

标签: c++ eclipse

我在eclipse中为c ++提供了以下代码,它强调stringcout,并说无法解析。

#include <string>
#include <iostream>

using namespace std;


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

}

任何人都知道为什么?

编辑:截图

编辑:我找到了一个感谢所有人的解决方案(见答案)。

enter image description here

8 个答案:

答案 0 :(得分:71)

我也遇到过这个问题。

我发现这是因为Eclipse无法找到所有包含标题。

轻松修复:

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

  1. 转到项目&gt;属性&gt; C / C ++ Build &gt; 工具链编辑器
  2. 当前工具链更改为任何其他值,点击应用
  3. 当前工具链设置为原始值,点击应用
  4. 编译项​​目
  5. 详细解决方法:

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

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

      这个答案已经过时了。如果上述任何内容都没有帮助

      ,请继续

      如果前面的步骤没有帮助,我们需要手动设置包含目录(不建议使用)

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

答案 1 :(得分:6)

问题是我需要安装minGW and MSY S并添加到PATH。

问题现已解决。

答案 2 :(得分:4)

您需要确保在Eclipse中正确设置环境,以便了解包含的路径。否则,它会将它们强调为未找到。

答案 3 :(得分:4)

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

您也可以尝试使用“CDT GCC内置编译器设置”。转到项目属性&gt; C / C ++一般&gt;预处理器包含路径&gt;提供商标签 然后检查“CDT GCC内置编译器设置”,如果不是。

其他解决方案(使用包含路径等)都没有为我的类型'字符串'工作,但这个解决了它。

答案 4 :(得分:2)

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

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

我在Preferences&gt;中添加了filetype * .tcc作为“C ++ Header File”。 C / C ++ /文件类型。 现在可以从内部索引和代码分析器中解析std :: string。 也许这在默认情况下会添加到Eclipse CDT中。

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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

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

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

我已经在How to solve "Unresolved inclusion: <iostream>" in a C++ file in Eclipse CDT?

上对此进行了更详细的解释。