Exception in ESP32 example with arduinoIDE

Description

I`m trying to make work the example in LVGL_Arduino.ino
But when I try to compile the sketch I have the following exception:

sketch\preubaLVGL.ino.cpp.o:(.literal._Z5setupv+0x28): undefined reference to lv_ex_btn_1' sketch\preubaLVGL.ino.cpp.o: In function setup()’:
C:\Users\alvar\Documents\Arduino\preubaLVGL/preubaLVGL.ino:103: undefined reference to `lv_ex_btn_1’
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT V1.

I include the “lv_examples-master/lv_examples.h” but i can’t compile

What MCU/Processor/Board and compiler are you using?

ESP32 NODE MCU and ILI9341 with the connections of az touch board

What LVGL version are you using?

v7.7.1
and the examples

What do you want to achieve?

Learn to use the librarie

What have you tried so far?

I tryed work the example of slider in the librarie version 3.0, downloaded from the manager libraries of arduinoID but I couldn’t work the touch, I saw the example well but the touch didn’t work

Code to reproduce

#include <lvgl.h>
#include <TFT_eSPI.h>
#include "lv_examples-master/lv_examples.h"

TFT_eSPI tft = TFT_eSPI(); /* TFT instance */
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10];

int screenWidth = 240;
int screenHeight = 320;

#if USE_LV_LOG != 0
/* Serial debugging */
void my_print(lv_log_level_t level, const char * file, uint32_t line, const char * dsc)
{

    Serial.printf("%s@%d->%s\r\n", file, line, dsc);
    Serial.flush();
}
#endif

/* Display flushing */
void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
{
    uint32_t w = (area->x2 - area->x1 + 1);
    uint32_t h = (area->y2 - area->y1 + 1);

    tft.startWrite();
    tft.setAddrWindow(area->x1, area->y1, w, h);
    tft.pushColors(&color_p->full, w * h, true);
    tft.endWrite();

    lv_disp_flush_ready(disp);
}

/*Read the touchpad*/
bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data)
{
    uint16_t touchX, touchY;

    bool touched = tft.getTouch(&touchX, &touchY, 600);

    if(!touched)
    {
      data->state = LV_INDEV_STATE_REL;
      return false;
    }
    else
    {
      data->state = LV_INDEV_STATE_PR;
    }

    if(touchX>screenWidth || touchY > screenHeight)
    {
      Serial.println("Y or y outside of expected parameters..");
      Serial.print("y:");
      Serial.print(touchX);
      Serial.print(" x:");
      Serial.print(touchY);
    }
    else
    {
      /*Set the coordinates*/
      data->point.x = touchX;
      data->point.y = touchY;
  
      Serial.print("Data x");
      Serial.println(touchX);
      
      Serial.print("Data y");
      Serial.println(touchY);

    }

    return false; /*Return `false` because we are not buffering and no more data to read*/
}

void setup()
{
    Serial.begin(115200); /* prepare for possible serial debug */

    lv_init();

#if USE_LV_LOG != 0
    lv_log_register_print_cb(my_print); /* register print function for debugging */
#endif

    tft.begin(); /* TFT init */
    tft.setRotation(1); /* Landscape orientation */

    uint16_t calData[5] = { 275, 3620, 264, 3532, 1 };
    tft.setTouch(calData);
  
    lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10);

    /*Initialize the display*/
    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.hor_res = 320;
    disp_drv.ver_res = 240;
    disp_drv.flush_cb = my_disp_flush;
    disp_drv.buffer = &disp_buf;
    lv_disp_drv_register(&disp_drv);

    /*Initialize the (dummy) input device driver*/
    lv_indev_drv_t indev_drv;
    lv_indev_drv_init(&indev_drv);
    indev_drv.type = LV_INDEV_TYPE_POINTER;
    indev_drv.read_cb = my_touchpad_read;
    lv_indev_drv_register(&indev_drv);

  
    lv_ex_btn_1();
}


void loop()
{

    lv_task_handler(); /* let the GUI do its work */
    delay(5);
}

What can I do to test the librarie?

What error do you get after including that header?

sketch \ preubaLVGL.ino.cpp.o :(. literal._Z5setupv + 0x28): referencia indefinida a  `lv_ex_btn_1' sketch\preubaLVGL.ino.cpp.o: In function ` setup () ':
C: \ Users \ alvar \ Documents \ Arduino \ preubaLVGL / preubaLVGL.ino: 103: referencia indefinida a ` lv_ex_btn_1 '
collect2.exe: error: ld devolvió 1 estado de
salida estado de salida 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT

Did you ensure that the lv_examples source files are being compiled (e.g. by adding a test #error statement to one of them)?

If I add #error in lv_examples.h I get the error:

/**
 * @file lv_examples.h
 *
 */

#ifndef LV_EXAMPLES_H
#define LV_EXAMPLES_H

#error "aaaooo"

#ifdef __cplusplus
extern "C" {
#endif

In file included from C:\Users\alvar\Documents\Arduino\preubaLVGL\preubaLVGL.ino:3:0:
sketch\lv_examples-master/lv_examples.h:10:2: error: #error “aaaooo”
#error “aaaooo”
^
exit status 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT V1.

And if I add the #error in lv_ex_get_started.h I get the same

In file included from sketch\lv_examples-master/lv_examples.h:37:0,
from C:\Users\alvar\Documents\Arduino\preubaLVGL\preubaLVGL.ino:3:
sketch\lv_examples-master/src/lv_ex_get_started/lv_ex_get_started.h:9:2: error: #error “aaaooo”
#error “aaaooo”
^
exit status 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT V1.

But if I try to make works the example with a call of lv_ex_get_started_1();

C:\Users\alvar\Documents\Arduino\preubaLVGL/preubaLVGL.ino:104: undefined reference to `lv_ex_get_started_1’
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT V1.

What I can be doing wrong?

Thanks in advance

What happens if you add it to a C file (i.e. lv_ex_btn_1.c)?

Just if I add the #error in lv_ex_btn_1.c, I don`t get the error

sketch\preubaLVGL.ino.cpp.o:(.literal._Z5setupv+0x28): undefined reference to lv_ex_btn_1' sketch\preubaLVGL.ino.cpp.o: In function setup()’:
C:\Users\alvar\Documents\Arduino\preubaLVGL/preubaLVGL.ino:104: undefined reference to `lv_ex_btn_1’
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compilando para la tarjeta DOIT ESP32 DEVKIT V1.

How It`s possible? What can I do?

Thanks for all

This means that the example C files are not being compiled. I am not entirely sure why as I don’t use Arduino IDE. You would want to look up how to include additional C files in the sketch.