You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);

额外验证步骤

  1. 确认lv_conf.h中已正确启用字体:
    #define LV_FONT_UNSCII_16 1
    
  2. 无需额外声明extern或LV_FONT_DECLARE,只要lv_conf.h开启了字体,LVGL会自动在相关头文件中导出字体变量。

如果还有编译问题,检查:

  • 工程是否正确包含了LVGL的字体头文件(比如lv_fonts.h)
  • 确认使用的LVGL版本确实是8.x(可以通过LVGL_VERSION_MAJOR宏验证)

内容的提问来源于stack exchange,提问作者Steve Harding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:14:51