“未解决的包容性”错误与Eclipse CDT的C标准库头

问题描述:

我设立了CDT Eclipse和写了一个简单的hello world C程序:“未解决的包容性”错误与Eclipse CDT的C标准库头

#include <stdio.h> 

int main(void){ 
    puts("Hello, world."); 
    return 0; 
} 

该方案建立和运行正常,但日食一直显示这当我将鼠标放在它上面时,表示"Unresolved inclusion: <stdio.h>"的包含语句旁边的黄色问号。

它不影响程序的运行,但我觉得它很烦人。

有没有人有任何想法如何删除它?

+1

你会认为,Hello World示例会为你做到这一点,或至少提供一些帮助。如果eclipse不包含编译器,为什么不呢? – 2012-08-03 21:07:04

+0

http://*.com/questions/7905025/string-could-not-resolved-error-in-eclipse-for-c – Vanuan 2012-10-22 10:07:39

编译器的Eclipse使用是能够解决的符号就好了,这样的代码将编译好的。

但代码完成/预处理Eclipse是用不知道从哪里stdio.h中存在。

您需要指定stdio.h所在的文件系统路径。

参见:http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm

+1

感谢您的答复。但是Ubuntu 11.10的路径在哪里? – 2012-02-18 02:23:54

+8

问题解决。它在/ usr/include中。再次感谢。 – 2012-02-18 02:40:12

+0

让我困惑的一件事是,我不得不将路径添加到“包含”选项卡,而不是“库路径”选项卡。我一直认为“角架”包括“图书馆”在内。 – aaaidan 2012-07-07 05:24:36

  • 选择文件>>新建项目
  • 在项目向导中,选择C/C++ >> C++项目
  • 在 “项目类型” 部分中,选择“生成文件项目>>世界,你好C++项目
  • 在“工具链”部分中,选择“李nux GCC

它可以解决问题。 (请原谅我的英语很差)

+1

我做了那些事情,但它仍然不认识头文件在/ usr/include中。 – 2013-01-27 21:37:00

+0

比添加每一个包括你自己要容易得多。我确实使用了交叉平台选项,它也运行良好(在Ubuntu上) – panmari 2013-05-03 12:56:49

+0

非常有帮助!伟大的英语。 – zehelvion 2016-03-10 15:42:51

我找到这些问题的答案(包括接受的)有些神秘。

对于我来说,我不得不添加其中stdio.h中所在的路径(如@ardnew说的)。在Eclipse中,打开项目的属性,展开“C/C++常规”并选择“路径和符号”。

确保您已经添加了include DIR您所使用的每种语言。 (在我的情况,我需要只需将其添加到GNU C++)

enter image description here

+0

这是非常接近我需要的!只需要更改路径中的用户名。 – Lucas 2013-10-08 08:26:31

+2

在OS X上,您可能需要使用命令'/ usr/bin/xcode-select --install'手动安装命令行开发人员工具(首先需要安装Xcode),然后您可以将Eclipse指向'/usr/include /' – RobV 2014-04-15 22:24:55

+1

关于优胜美地。使用Eclipse Juno。除了我给出的路径有点不同(/ Users/SrinivasanNatarajan/android-ndk/platforms/android-19/arch-arm/usr/include)之外,这种方法对我很有用。尽管所有未解决的错误都消失了,但我仍然怀疑'我是否设置了正确的路径'。 “Eclipse真的很糟糕”。必须花费数小时才能设置IDE进行开发。 – 2015-04-01 10:22:36

只是增加了知识基础,我只是做这与cygwin的WIN7。

这是什么似乎为我工作。

包括路径,C:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include 
D:\dev\cygwin\usr\include 

包括C++的路径:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include 
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++ 
D:\dev\cygwin\usr\include 

这让我的Hello World的全新的编译。

+0

我是来自未来。我来说声谢谢。这实际上是对我而言的第一件事情。我从未有过这样一个困难的问候世界。谢谢你,先生。 – nVentimiglia 2014-07-13 15:57:26

+1

不客气。 – 2014-07-14 03:31:20

在ADT我做了以下内容:

  1. 右键单击该项目并选择Properties
  2. 扩展C/C++通用和选择预处理器包括路径,宏等
  3. 选择CDT用户设置项
  4. 选择添加...从右手菜单
  5. 在添加包括目录更改项目路径文件系统路径
  6. 浏览到包含您的包含文件
  7. 搅拌,并根据需要

转到项目重复目录>属性> C/C++常规>预处理程序包含>提供商 并选择“CDT GCC内置的编译器设置“和”CDT CROSS GCC内置编译器设置“。

+1

...并勾选“使用全球提供商之间共享的项目”框 – Urhixidur 2016-12-06 17:39:09

+0

我还必须检查“使用全球提供商之间共享的项目”作为@Urhixidur提到。我尝试了大量的解决方案,这个内置的eclipse错误,这是真正为我工作的。这些线路很烦人。谢谢! – CodeGuyRoss 2017-09-26 15:42:33

我使用的Eclipse与Cygwin和这个工作对我来说:

转到项目>属性> C/C++常规>预处理程序包含...>提供商 并选择“CDT GCC内置的编译器设置Cygwin [共享]“。

通常情况下,Eclipse应该能够自动解析标​​准的包含文件。它通过调用gcc并询问其配置来完成此操作。 Eclipse很可能没有找到你的gcc(或者至少不是你用于编译的版本)。

而不是指定项目设置中的所有标准包含路径,您可能想确保Eclipse找到gcc。在启动Eclipse之前,将找到gcc的目录添加到PATH环境变量中。

如果您希望不同的项目使用不同的编译器,那么您可能需要调整发现选项。这些在默认情况下是隐藏的,所以首先从窗口>首选项> C/C++>属性页面设置>显示“发现选项”页面启用它们。然后你可以在项目属性中的C/C++ Build> Discovery Options下找到它们。

我正在与多个交叉编译器配置,其中我需要使用不同位置的STD头文件(和其他环境变量)。

解决方法是设置索引器,使其使用活动配置。
不幸的是,由于一些bug in eclipse,则该选项没有存储在本地,所以你必须,如果你想再次当你打开Eclipse将配置保存到使用工作区配置。

窗口 - >首选项 - > C/C++ - >索引 - >使用积极构建配置

这将使日食使用设置与项目的积极十字GCC配置正确的编译器。

+0

有同样的问题,交叉编译到ESP8266。太糟糕了,这个页面如此拥挤,不得不自己弄清楚。 – 2016-05-07 12:35:45

+0

谢谢你。在创建多个交叉编译器配置(针对不同版本的ESP32“ESP-IDF”嵌入式SDK)后,我也遇到了这个问题。索引器没有拾取正确的标题。此设置似乎允许索引器使用相同的环境作为活动配置,在我的情况下,它允许它拿起正确的标题。 – meowsqueak 2018-01-17 02:32:29

我配置路径和符号的错误是最初为不同语言配置了包含路径。我正在使用CDT和Cygwin gnu C++。所以你必须在GNU C++语言下配置符号和路径。enter image description here

作为(当前)顶部的答案笔记,有必要指定构建文件夹的位置,可以通过右键单击项目,然后选择Properties-> C/C++ General- >路径和符号。

剩下的问题就是需要添加什么样的路径。

如果你交叉编译或做一些花哨的,你可能知道你需要什么路径,并以何种顺序(或应该看看你的编译器和/或其他依赖的文档)。

对于那些寻找最基础的:如果你有GCC设置正确的命令行访问,并需要知道什么是默认包括它使用的路径,只问它。

根据你的语言感兴趣,用途:

gcc -x c -v -E /dev/null 
gcc -x c++ -v -E /dev/null 

...这将列出所使用的默认编译器设置调用gcc的时候(这个命令也能当“海湾合作委员会”是真的是clang的别名,就像在OSX上一样)。

在Windows上,注意/dev/null只是一个空文件输入一个简单的简写(而无需创建一个)。

朝下方将是列表的include目录:

#include "..." search starts here: 
#include <...> search starts here: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory) 
End of search list. 

如果输入上市,成为Eclipse的路径和符号对话框这里列出的目录,顺序是,Eclipse CDT应该能够找到标准头文件,也许还有一些特定于您的操作系统的额外头文件

(与感谢devnull's answer到一个相关的问题。)

我米使用基于CodeWarrior IDE的嵌入式项目蚀和我刚通过删除和添加再次源地址,以项目投资Properities->Ç解决了这个问题/ C++ General-> Path和Sybols-> Include Directories。这意味着有很多理由采取“未解决的包含:”的信息,也有很多解决方案。