Eclipse CDT包含路径,“工具链”,找不到字符串,cout等

时间:2016-03-25 01:46:11

标签: eclipse-cdt

我正在尝试使用CDT编辑C ++文件。但是,它拒绝看到像字符串和向量这样的std类。

(我将继续使用eclipse之外的make构建,至少现在。代码编译得很好。但是没有字符串等的定义,几乎所有内容都在编辑器中显示为错误。)

我正在使用Luna。 CDT使用Help>添加到面向Java的eclipse中安装新软件。

文档只是说“安装工具链并且发生了一些事情”。但是花了几个小时阅读这篇文章,我认为“工具链”这个短语根据句子有几个不同的含义。其中包括

  • 编译器和链接器本身,例如minggw
  • 添加到Eclipse本身的额外内容(插件?),以便它可以使用这些编译器。
  • Eclipse内部的配置

我的make文件使用

D:\cygwin64\lib\gcc\x86_64-w64-mingw32\4.8.3\include

但有时CDT似乎指向

D:\mingw64\include\c++\4.5.4

哪个好,因为它会有相同的.h文件。

我试过摆弄PATH(到/ bin),加上Project Properties> >环境MINGW_HOME。 “工具链编辑器”提到MingGW并说GCC C ++,但我不知道它的真正含义是什么,易于使用的界面没有显示路径。

我也尝试将D:\ cygwin64 \ lib \ gcc \ x86_64-w64-mingw32 \ 4.8.3 \ include添加到Paths&符号>包括,但这没有帮助。

还有“库和库路径”。我不知道有什么区别(两者都想要路径),但我猜这是用于链接,而不是编译。我也猜测C ++的IDE解析编辑期间由CDT本身完成,不依赖于外部编译器。

第二个问题是CDT如何确定哪些头文件是相关的?通常在C中是不可判定的,在我的情况下,我的头文件依赖于从包含.cpp文件加载的其他头文件。我猜它只是忽略#include指令并加载它遇到的每个头文件,希望没有冲突。

2 个答案:

答案 0 :(得分:0)

我的hack如下,花了太多时间试图正确修复它并且没有帖子。

#ifdef ECLIPSE
// Dummy declarations to help with misconfigured Eclispse
  class string{};
  template <typename T>
  class vector{
  public:
      unsigned size();
      void push_back(T t);
      T at(unsigned idx);
  };
#endif

是的,只是让Eclipse认为这些类没问题。我不会称之为答案。

奇怪的是,字符串的类def似乎足以说服eclipse转换为char *是正常的。

(我使用using访问这些类,所以没有std ::)

答案 1 :(得分:0)

如果CDT无法解析包括<string><vector>在内的标准库,则表明它无法找到您的编译器。

打开命令提示符并键入g++。它被发现了吗?如果不是,则表示包含编译器的目录不在PATH环境变量中。将此目录(可能类似于D:\cygwin64\bin)添加到PATH(如何执行此操作取决于您的Windows版本,但它类似于Computer | Properties | Advanced system settings | Environment variables),然后重新启动Eclipse并尝试试。