LVGL 8字体使用报错:无法将无名枚举转换为const lv_font_t*
LVGL 8 字体赋值报错:cannot convert 'unnamed enum' to 'const lv_font_t*'
你的核心问题是误用了LVGL 7的API调用格式,LVGL 8对样式设置函数做了简化,移除了状态参数(比如LV_STATE_DEFAULT)。
错误原因
在LVGL 7中,样式设置函数需要传入状态参数:
lv_style_set_text_font(&style, LV_STATE_DEFAULT, &lv_font_unscii_16);
但LVGL 8的lv_style_set_text_font签名已改为:
void lv_style_set_text_font(lv_style_t * style, const lv_font_t * font);
你传入的LV_STATE_DEFAULT是枚举类型,编译器会尝试把它转成lv_font_t*,因此触发类型转换错误。
修复代码
把状态参数去掉,直接传入字体指针:
static lv_style_t style; lv_style_init(&style); // 移除LV_STATE_DEFAULT参数 lv_style_set_text_font(&style, &lv_font_unscii_16);
额外验证步骤
- 确认
lv_conf.h中已正确启用字体:#define LV_FONT_UNSCII_16 1 - 无需额外声明
extern或LV_FONT_DECLARE,只要lv_conf.h开启了字体,LVGL会自动在相关头文件中导出字体变量。
如果还有编译问题,检查:
- 工程是否正确包含了LVGL的字体头文件(比如
lv_fonts.h) - 确认使用的LVGL版本确实是8.x(可以通过
LVGL_VERSION_MAJOR宏验证)
内容的提问来源于stack exchange,提问作者Steve Harding
相关产品推荐
相关产品推荐

