其他分享
首页 > 其他分享> > c – 即使已设置包含路径,Eclipse也找不到头文件管理器

c – 即使已设置包含路径,Eclipse也找不到头文件管理器

作者:互联网

在使用GCC的特定Eclipse环境中创建新的C项目时,我遇到了一个特殊的链接器问题:

Fatal error: my_header.h: No such file or directory.

我得到这个问题,因为“my_header.h”驻留在子文件夹中.经过调查,我发现你需要在GCC包含路径(选项-I)中包含子文件夹.如何做到这一点似乎在不同的Eclipse实现之间有所不同,但它应该是这样的

项目 – >属性 – > C/C++ Build – >设置 – >编译器 – >包括

其中“编译器”在不同的实现中可以具有不同的名称,并且“包括”可以被称为“输入”或类似.

应该有一个选项可以添加包含路径(选项-I),您可以在其中设置相对于特定项目的路径,方法是单击“添加”图标,然后单击“工作区”按钮,然后选择目录. Eclipse然后生成一个路径,看起来应该是这样的

“${workspace_loc:/ ${} ProjName /应用}”

对项目中的所有子文件夹(及其子文件夹)执行此操作.

但是尽管对相关文件夹做了以上操作,我仍然得到“没有这样的文件或目录”错误.可能是什么问题呢?

(我发布此Q& A样式,因为我想与其他人分享此问题的解决方案)

解决方法:

出现此错误的原因是没有对gcc包含路径进行健全性检查.尽管如上所述给出了Eclipse的相对路径,但Eclipse仍然会传递一条到gcc -I的绝对路径.

假设您的项目位于以下路径:

C:\åäö\workspace\project

和子文件夹位于

C:\åäö\workspace\project\std

其中“åäö”是包含任何非标准ASCII字母的任何字符串.在这个例子中,我使用瑞典语,但你会遇到大多数语言(法语,德语,西班牙语等)的非标准字母.

问题是Eclipse传递了完整路径,而不是相对于GCC的路径,然后存在某种符号表事故.所以而不是得到预期

-I"C:\åäö\workspace\project\std"

你可能会得到随机垃圾信件,例如:

-I"C:\@!#\workspace\project\std"

该路径没有意义,并且包含路径未进行完整性检查,因此除非您详细阅读控制台输出,否则无法获得诊断信息.相反,Eclipse默默地假装它已将include路径添加到它应检查的路径列表中,即使它没有.

唯一的解决方案似乎是避免将项目放在包含非ASCII字母的路径下面.看起来这是使用GCC的Eclipse的几个实现中的错误.

标签:c-3,c,gcc,eclipse,include-path
来源: https://codeday.me/bug/20190830/1766356.html