【问题标题】:Eclipse not finding std c++ librariesEclipse 找不到标准 C++ 库
【发布时间】:2014-05-21 19:34:00
【问题描述】:

我有一台 Windows8 机器,在 c:\mingw 中安装了 mingw Eclipse 确实成功地编译了程序,但它认为行包含在编译时很好的错误。 Eclipse 本身没有找到这些库。

当我第一次在安装了 CDT 组件的 Eclipse 中构建项目时,它会在每个 #include 和使用对象的每一行上显示错误。

例子:

#include <iostream>
using namespace std;

int main() {
  cout << "hello\n";
}

上面的代码显示了 include、using 和 cout 属性 C++/通用预处理器包括 然后在提供程序选项卡上,我可以检查“CDT Build output parser”并修复下面第一个答案所述的错误,我正在检查。但这仅适用于该项目。我每次都必须这样做。每次我构建一个新项目而不重新配置每个项目时,如何让 eclipse 简单地接受标准 C++?

我已经能够通过进入项目设置并添加目录来停止包含错误:

c:/bin/mingw/lib/gcc/include ...

这会在使用对象的行上留下错误。

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main() {
    string s = "this is a test.";
    regex e("est");
    smatch m;

带有正则表达式的行仍然显示错误:“无法解析类型正则表达式” 即使代码编译并且正则表达式包含被识别。

另外,在另一台运行 windows 8.1 并安装了 Mingw 的机器上,eclipse 不会调试。是否有一些关于如何将 Eclipse CDT 连接到库的文档?

【问题讨论】:

    标签: c++ eclipse eclipse-cdt


    【解决方案1】:

    我也遇到了同样的问题。 Eclipse 像错误一样在正则表达式关键字下划线,但项目构建时没有错误。我在Properties-&gt;C/C++ Build-&gt;GCC C++ Compiler-&gt;Dialect Language Standart中选择了一种语言方言为“ISO C++1y (-std=c++1y)

    【讨论】:

      【解决方案2】:

      虽然您显然在 Eclipse 中使用 gcc 成功编译了代码,但 Eclipse 有自己的内置 C++ 解析器,您需要单独让它知道您正在使用 C++11。

      Project propierties -&gt; C/C++ General -&gt; Preprocessor Include Paths 下的CDT GCC Builtin Compiler Settings 中添加-std=c++11 选项,编译器规范应如下所示:

      ${COMMAND} -E -P -v -dD ${INPUTS} -std=c++11 
      

      更新。请阅读 Setting Up Include Paths and Macros for C/C++ Indexer 以了解 CDT 自动发现支持的工具链的包含路径和预处理器符号(又名扫描器发现)如何适用于您。

      要点是 CDT 使用 Language Settings Providers 来查找包含路径和预处理器符号。并且Language Settings Providers可以在项目属性页面"Preprocessor Include Paths, Macros, etc."进行配置

      一旦您进行了适当的设置,您就可以将它们设置为模板工作区,然后将模板工作区复制到您的新项目中,或者使用一个脚本来设置相关设置。另请参阅:Setting preferences for all Eclipse workspaces

      【讨论】:

      • 也许我应该举一个不使用 C++11 的例子。我用更普通的对象得到这些错误,比如 cout!
      • 我更改了问题以使其更清楚。您的回答使我得到了部分回答:我可以编辑项目以识别标题,但为什么我每次都必须这样做?我希望 Eclipse 每次都能识别标准的东西(忘记 C++11)。我不应该点击进入项目设置来让它识别#include
      猜你喜欢
      • 2011-09-30
      • 2022-01-16
      • 2015-01-05
      • 2011-10-15
      • 2013-05-22
      • 1970-01-01
      • 2017-04-13
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多