[STM32G4] 编译预处理器报错说找不到.h文件

[复制链接]
394|9
cutfall 发表于 2025-9-24 21:50 | 显示全部楼层 |阅读模式
创建了一个STM32项目,选择了NUCLEO-G431RB开发板并生成了代码。我在项目中添加了一个源文件夹(mu_platform),并将一些.c和.h文件链接到该文件夹中。
8912068d3f6c850b59.png

我选中了mu_platform文件夹,右键点击"添加/移除包含路径",并检查了项目属性确认已添加。是正确的:
9997868d3f6d958f77.png

但现在编译时,C预处理器报错说找不到mu_platform内部的.h文件,例如mu_time.h,尽管已经链接到mu_platform目录中:
C:/Users/r/Projects/mulib-examples/mu_platform/nucleo_g431rb/mu_time.c:28:10: fatal error: mu_time.h: No such file or directory
   28 | #include "mu_time.h"

这是因为C预处理器无法解析链接文件吗?我是否需要将文件系统目录指定为包含目录,而不是项目目录的链接目录?

classroom 发表于 2025-9-25 15:37 | 显示全部楼层
STM32CubeIDE 的 "Linked Resources" 机制可能在构建时未将链接目录转换为真实的文件系统路径,导致编译器无法找到头文件。
cr315 发表于 2025-9-25 16:38 | 显示全部楼层
可能是相对路径问题
duo点 发表于 2025-9-25 18:39 | 显示全部楼层
如果 mu_time.h 的路径是 mu_platform/nucleo_g431rb/mu_time.h,但 #include 语句是:
c
#include "mu_time.h"  // 编译器会在当前目录或 -I 路径中查找
而未将 mu_platform/nucleo_g431rb 添加到包含路径,则会报错。
flycamelaaa 发表于 2025-9-25 19:39 | 显示全部楼层
直接添加文件系统路径。
jcky001 发表于 2025-9-25 19:40 | 显示全部楼层
禁用符号链接。
onlycook 发表于 2025-9-25 20:41 | 显示全部楼层
避免链接目录,STM32CubeIDE 对链接资源的支持较弱,建议直接复制文件到项目内。
powerantone 发表于 2025-9-25 21:41 | 显示全部楼层
在 #include 中使用相对路径。
probedog 发表于 2025-9-25 15:42 | 显示全部楼层
考虑导出为 Makefile/CMake 项目。
stormwind123 发表于 2025-9-25 22:42 | 显示全部楼层
根本原因是 STM32CubeIDE 的链接资源未正确映射到编译器包含路径。推荐直接添加物理路径到 Properties → Paths and Symbols → Includes,或修改 #include 语句为显式路径。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部