Eclipse 找不到头文件管理器,即使已设置包含路径
Eclipse can't find header filers even though include paths have been set
在使用GCC的特定Eclipse环境中创建一个新的C项目时,我遇到了一个特殊的链接器问题:
致命错误:my_header.h:没有此类文件或目录。
我遇到这个问题,因为"my_header.h"驻留在子文件夹中。经过调查,我发现您需要在 GCC 包含路径中包含子文件夹(选项 -I
)。在不同的 Eclipse 实现之间,这样做的方式似乎有所不同,但它应该是这样的
C/C++ 生成
->设置 ->编译器 -> 包括其中"编译器"在不同的实现中可能有不同的名称,而"include"可以称为"input"或类似名称。
应该有一个选项来添加包含路径(选项 -I
),您可以在其中设置相对于特定项目的路径,方法是单击"添加"图标,然后单击工作区按钮,然后选择目录。然后 Eclipse 生成一个路径,它应该看起来像
"${workspace_loc:/${ProjName}/app}"
对项目中的所有子文件夹(及其子文件夹)执行此操作。
但是,尽管对相关文件夹执行了上述操作,我仍然收到"没有此类文件或目录"错误。可能是什么问题?
(我发布此问答样式,因为我想与其他人分享此问题的解决方案)
此错误的原因是没有对 gcc 包含路径进行健全性检查。尽管如前所述给出了 Eclipse 的相对路径,但 Eclipse 仍将传递到 gcc -I
的绝对路径。
假设您的项目位于如下路径:
C:åäöworkspaceproject
和位于
C:åäöworkspaceprojectstd
其中"åäö"是包含任何非标准 ASCII 字母的任何字符串。在这个例子中,我使用了瑞典语,但你会在大多数语言(法语、德语、西班牙语等)中遇到这种非标准字母。
问题是 Eclipse 传递的是完整路径,而不是 GCC 的相对路径,然后出现了某种符号表事故。因此,而不是得到预期的
-I"C:åäöworkspaceprojectstd"
您可能会收到随机垃圾字母,例如:
-I"C:@!#workspaceprojectstd"
路径没有意义,并且包含路径未进行健全性检查,因此除非详细阅读控制台输出,否则不会收到任何诊断信息。相反,Eclipse 默默地假装它已将您的包含路径添加到它应该检查的路径列表中,即使它没有。
唯一的解决方案似乎是避免将项目放在包含非 ASCII 字母的路径下。这似乎是使用 GCC 的几个 Eclipse 实现中的一个错误。
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Cython 包含catkin_pkg设置的错误
- wxWidgets 自动会议设置未将包含目录设置为 -Isystem,而是设置为 -I
- 在C++中设置仅包含每个类的一个外观的数据结构
- 在Windows上设置CMake和vcpkg时出错"无法打开包含文件"
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- 在Visual Studio Code(.json配置)中设置相对于工作区路径的c / c ++项目的包含路径
- 如何在 pybind11 项目中设置包含路径
- 通过程序代码行设置C++包含路径
- cout 打印的字符 [] 包含的字符数超过设置长度
- 在 ONE 设置中添加附加包含目录并引用 => 指向静态库
- 当对象包含其他对象的向量时,无法设置值
- 如何为所有 CLion 包含设置单个根
- 如何在 gtk 中设置包含宽字符的文本
- 如何在cmake中为每个项目设置包含目录
- Eclipse 找不到头文件管理器,即使已设置包含路径
- std::设置包含对与自定义比较器
- 在std::vector内部设置包含指针的boost::变量
- 我应该如何为我的程序设置包含布局
- 为什么必须链接库并设置包含目录