我正在尝试使用CDT编辑C文件 . 但是,它拒绝看到字符串和向量等std类 .
(至少现在我将继续用eclipse之外的make构建 . 代码编译得很好 . 但是如果没有字符串等的定义,几乎所有内容都在编辑器中显示为错误 . )
我正在使用Luna . CDT使用“帮助”>“安装新软件”添加到面向Java的eclipse中 .
文档只是说“安装工具链和发生的事情". But having spent several hours reading up on this, I think the phrase "工具链”根据句子有几种不同的含义 . 这些包括
-
编译器和链接器本身,例如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),加上项目属性>>环境MINGW_HOME . “工具链编辑器”提到MingGW并说GCC C,但我不知道它的真正含义是什么,易于使用的界面没有显示路径 .
我也尝试将D:\ cygwin64 \ lib \ gcc \ x86_64-w64-mingw32 \ 4.8.3 \ include添加到路径和符号>包含,但这没有帮助 .
还有“库和库路径” . 我不知道有什么区别(两者都想要路径),但我猜这是用于链接,而不是编译 . 我也猜测在编辑过程中对C的IDE解析是由CDT本身完成,并不依赖于外部编译器 .
第二个问题是CDT如何确定哪些头文件是相关的?通常在C中是不可判定的,在我的情况下,我的头文件依赖于从包含.cpp文件加载的其他头文件 . 我猜它只是忽略#include指令并加载它遇到的每个头文件,希望没有冲突 .
2 回答
我花了太多时间试图正确修复它并且没有帖子,我的黑客如下 .
是的,只是让Eclipse认为类是正常的 . 我不会称之为答案 .
奇怪的是,字符串的类def似乎足以说服eclipse转换为char *是好的 .
(我使用use访问这些类,所以没有std::)
如果CDT无法解析包括
<string>
和<vector>
在内的标准库,则表明它无法找到您的编译器 .打开命令提示符并键入
g++
. 它被发现了吗?如果不是,则表示包含编译器的目录不在PATH
环境变量中 . 将此目录(可能类似于D:\cygwin64\bin
)添加到PATH
(如何执行此操作取决于您的Windows版本,但它类似于Computer | Properties | Advanced system settings | Environment variables
),然后重新启动Eclipse并重试 .