LVGL编译的一些问题

张开发
2026/5/9 7:43:28 15 分钟阅读

分享文章

LVGL编译的一些问题
一、放置gif无法显示检查以下情况1.在lv_conf.h里检查gif是否已经开启代码应为/*GIF decoder library*/#define LV_USE_GIF 1 // ✅ 已经开启2.检查mycode的自定义.c文件笔者以test.c为例子在test.c文件里有一个按钮btn开关sw动图gif1功能#include lvgl/lvgl.h #include lvgl/demos/lv_demos.h #include lv_drivers/display/fbdev.h #include lv_drivers/indev/evdev.h #include unistd.h #include pthread.h #include time.h #include sys/time.h #include mycode/pjj.h #include mycode/base.h void test () { lv_obj_t * screen lv_scr_act(); lv_obj_t * btn1 lv_btn_create(screen); lv_obj_t * label1 lv_label_create(btn1); lv_label_set_text(label1,HAHAHA); lv_obj_t * sw1 lv_switch_create(screen); //btn大小与位置 lv_obj_set_x(btn1,300); lv_obj_set_y(btn1,215); lv_obj_set_size(btn1,200,50); //switch位置 lv_obj_set_x(sw1,400); lv_obj_set_y(sw1,220); }; void gif1(void) { // LV_IMG_DECLARE(img_bulb_gif); lv_obj_t * img; /* img lv_gif_create(lv_scr_act()); lv_gif_set_src(img, img_bulb_gif); lv_obj_align(img, LV_ALIGN_LEFT_MID, 20, 0); */ img lv_gif_create(lv_scr_act()); /* Assuming a File system is attached to letter A * E.g. set LV_USE_FS_STDIO A in lv_conf.h */ lv_gif_set_src(img, A:mycode/gif.gif); lv_obj_align(img, LV_ALIGN_RIGHT_MID, -20, 0); }检查文件路径A:mycode/gif.gif是否正确且完整不要少了A:这个前缀路径缺少盘符A:是不行的检查你的gif文件是否路径正确检查你的void gif1函数名不要和库函数重名常见的重名例子是lv_example_gif_13.检查test.htest.h里#ifndef __PJJ_H__ #define __PJJ_H_ #include ../lvgl/lvgl.h void test(); void gif1(); #endif你必须调用void gif14.检查main.c你必须调用gif1();或者你在test.h里把gif1继承进void testvoid test() { // 按钮和开关代码... gif1(); // 在 test 内部调用 }这样你在main里调用test文件就可以一次性调用全部的文件包括集成的gif文件了二、SQUARELINE生成的文件在Linux里make时提示报错或者无法读取文件1.检查保存目录由于SQUARELINE在导出的时候会生成两部分文件一个是UI相关的文件一个是根目录。ui文件你可以任意保存到你lvgl的位置这个文件夹你可以随便命名可以看到笔者的lvgl目录里有一个自定义的UI文件夹。另外一个是保存项目的根必须保存到你有makefile和main.c文件同时存在的根目录。要点lvgl的根目录且同时存在makefile和main.c笔者保存的位置是LV_ARM_V8.2这个目录这个目录是我的根目录包含了UI,LVGL,main.c,makefile等重要文件。SQUARELINE会在导出项目的时候修改你的makefile和main.c所以你必须把导出的根目录选择在这里下面是笔者的导出路径在SQUARELINE的file选项找到project settings并打开根目录保存必须强制在makefile和main.c所在的地方但是UI的保存目录你可以自己新建一个自定义文件夹对你来说好记即可2.检查makefile里是否添加了SQUARELINE的指定目录SQUARELINE生成的UI文件里有很多文件夹以及.c文件如果不在makefile里添加这些指定的目录那么你的lvgl在make的过程中就会出现报错尤其是在你添加事件的时候以上都是报错原因因此我们要加上指定目录。原则上SQUARELINE在你设定的UI文件夹创建了多少文件夹和.c文件你都要一个一个添加完全如下图UI目录里有componentsfontsimagesscreens和一堆.c文件那就一个一个添加好其中*.c代表所有的.c文件不要忘记还有这里设置完以后一定一定要在main.c里面添加un_init();进行ui的初始化并加载否则开发板无法显示东西。理论上到这里应该可以解决问题。

更多文章