Errores in Arduino IDE environment, Compiling EEZ LVGL

I'm a beginner. I'm working in the Arduino IDE with a Waveshare ESP32-S3 2.1" touchscreen display module. I'm using LVGL version 9.4.0 and it can't recognize any of the lv_ functions:
: undefined reference to lv_mem_free' : undefined reference to lv_img_set_angle'
: undefined reference to lv_img_set_zoom' : undefined reference to lv_obj_set_style_opa'
: undefined reference to lv_obj_set_height' : undefined reference to lv_obj_set_width'
: undefined reference to `lv_obj_set_y'
etc.

When I worked in EEZ Studio to develop the UI, I used LVGL version 9.x.

If anyone recognizes this error, please tell me what I can do.

Thanks.

Welcome to the forum

Please post your full sketch, using code tags when you do

Posting your code using code tags prevents parts of it being interpreted as HTML coding and makes it easier to copy for examination

In my experience the easiest way to tidy up the code and add the code tags is as follows

Start by tidying up your code by using Tools/Auto Format in the IDE to make it easier to read. Then use Edit/Copy for Forum and paste what was copied in a new reply. Code tags will have been added to the code to make it easy to read in the forum thus making it easier to provide help.

It is also helpful to post full error messages in code tags as it makes it easier to scroll through them and copy them for examination

Unless you have experience developing with either EEZ Studio or LVGL, it will be a bit difficult for a beginner to develop with both simultaneously.

1. About the errors

For example, the function lv_mem_free() is for LVGL8.x and does not exist in LVGL9.x. Function names often change with each version upgrade in LVGL.

2. My recommendation

I strongly recommend that you first verify that the LVGL demo program on Wiki works correctly (If you haven't already).

It's important to note that you should not install the latest version of LVGL, but rather use the LVGL library provided by Waveshare.

The "Install Offline" in the "Library Installation Requirements" section means that operation is not guaranteed unless you have the attached library.
This is because lv_conf.h and other files in the attached library may have been optimized by Waveshare for their products.

3. Step-by-step migration

If you want to develop with the latest LVGL version, you can start by extracting the necessary files, such as device drivers, from the their LVGL demo program.

Even in this case, I recommend taking it one step at a time, for example by displaying "Hello World" with lv_label widget, first using only LVGL, and then using EEZ Studio.

To develop more complex applications, read the respective documentation and sometimes try out the examples individually as you go.

I hope you enjoy reaching your goals step by step.

Good luck!

1 Like