[STM32F4] C++调用HAL函数库的问题。

[复制链接]
582|13
 楼主| 小库里 发表于 2025-6-21 10:04 | 显示全部楼层 |阅读模式
在STM32CubeIDE中创建了一个空的C++来创建一个具有自己结构的项目。
我的问题是,不能从C++文件导入HAL库,编译失败,提示来自HAL的函数的未定义引用。
我已经将HALlibrary文件添加到项目结构中,并在项目设置中添加了C和C++的路径。
但是不知道哪里有问题。


公羊子丹 发表于 2025-6-24 07:23 | 显示全部楼层
你是不是忘了用 extern "C" 包裹 HAL 的头文件?C++里不加这个会链接失败。
周半梅 发表于 2025-6-24 07:24 | 显示全部楼层
我之前也是这个问题,只要加上 extern "C" 就能识别 HAL 函数了。
帛灿灿 发表于 2025-6-24 07:25 | 显示全部楼层
确保 HAL 的 .c 文件有加入到编译单元,否则就算头文件加了也链接不到。
童雨竹 发表于 2025-6-24 07:25 | 显示全部楼层
C++调用C的库本来就要注意链接规则,最好把所有 #include "stm32f4xx_hal.h" 都放进 extern "C" 块里。
万图 发表于 2025-6-24 07:26 | 显示全部楼层
项目属性里 C++ 链接器那块要检查下,是不是有把HAL相关的.c源文件排除出编译了。
Wordsworth 发表于 2025-6-24 07:27 | 显示全部楼层
你新建的是C++工程,HAL库是C的,必须手动处理下语言兼容问题才行。
Bblythe 发表于 2025-6-24 07:28 | 显示全部楼层
如果你自己封装了一层C++类,别在.h头文件里直接include HAL,要放在.cpp里include。
Pulitzer 发表于 2025-6-24 07:29 | 显示全部楼层
加了extern "C"还是不行的话,看看.c源文件是不是没被编译器扫描到。
Uriah 发表于 2025-6-24 07:30 | 显示全部楼层
最好别改HAL源码,可以新建个桥接头文件,专门封装HAL函数用extern "C"声明。
Clyde011 发表于 2025-6-24 07:30 | 显示全部楼层
STM32CubeIDE默认是以C语言配置的工程,切成C++之后还要再检查一下编译器设置和路径宏。
probedog 发表于 2025-6-24 15:44 | 显示全部楼层
头文件包含是否正确
classroom 发表于 2025-6-24 15:44 | 显示全部楼层
检查链接器设置是否正确。
flycamelaaa 发表于 2025-6-24 15:45 | 显示全部楼层
清理并重建项目
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

52

帖子

0

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