我正在尝试使用CDT编辑C ++文件。但是,它拒绝看到像字符串和向量这样的std类。
(我将继续使用eclipse之外的make构建,至少现在。代码编译得很好。但是没有字符串等的定义,几乎所有内容都在编辑器中显示为错误。)
我正在使用Luna。 CDT使用Help>添加到面向Java的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指令并加载它遇到的每个头文件,希望没有冲突。
答案 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并尝试试。