KenjiMaehara
@KenjiMaehara (Kenji maemae)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

エラーはないが、ビルドが失敗する

解決したいこと

現在、VSCode + platformioでESP32用のプログラムを行えるように、リポジトリを作成して勉強中です。
https://github.com/KenjiMaehara/lvglTest20201003

先ほどまで、エラーが多発していたリポジトリで、そのエラーを解決することはできました。
https://qiita.com/KenjiMaehara/questions/205e6a3067d7298d8e9f

しかし、数個の警告を残して、ビルドの最後で失敗する現象が起きています。
この現象の解決方法を押して下さい。

発生している問題・エラー

> Executing task: C:\Users\kmaeh\.platformio\penv\Scripts\platformio.exe run <

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
---------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (2.0.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 3.10004.200129 (1.0.4)
 - tool-esptoolpy 1.20600.0 (2.6.0)
 - toolchain-xtensa32 2.50200.80 (5.2.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 40 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <lv_arduino> 3.0.1
|-- <ESP32 BLE Arduino> 1.0.1
Building in release mode
Linking .pio\build\esp32dev\firmware.elf
.pio\build\esp32dev\src\lv_demo_widgets.c.o:(.literal.lv_demo_widgets+0x100): undefined reference to `lv_list_set_scroll_propagation'
.pio\build\esp32dev\src\lv_demo_widgets.c.o: In function `visuals_create':
D:\test\EST32Test20201009\lvglTest20201003/src/lv_demo_widgets.c:379: undefined reference to `lv_list_set_scroll_propagation'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\esp32dev\firmware.elf] Error 1
======================================== [FAILED] Took 6.93 seconds ========================================
The terminal process "C:\Users\kmaeh\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

または、問題・エラーが起きている画像をここにドラッグアンドドロップ。

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。

0

1Answer

コンパイルエラーは出ていないようですが、リンクエラーはありますね。

.pio\build\esp32dev\src\lv_demo_widgets.c.o:(.literal.lv_demo_widgets+0x100): undefined reference to `lv_list_set_scroll_propagation'

この部分がそうです。
lv_list_set_scroll_propagationというのはLVGLのライブラリで定義されているシンボルのようですから、LVGLの静的ライブラリか共有ライブラリをリンクしないといけません。

リンカに対して-Lオプションでライブラリファイルのディレクトリを指定し、-lオプションでライブラリ名を指定すればライブラリがリンクされます。たとえばLVGLのライブラリが /path/to/lvgl/bin/liblvgl.so というファイルだったとすると、 -L/path/to/lvgl/bin -llvgl とすれば良いです。

直接リンカにオプションを設定するなら上記のようになります。platformioのことはよく知りませんが、そこらへんをよろしくやってくれるビルドツールなら、おそらく依存ライブラリの設定方法なんかもドキュメントに書かれていると思うのでそれを参照すると良いのではないでしょうか

1Like

Comments

  1. @KenjiMaehara

    Questioner

    回答頂きありがとうございます。”lv_list_set_scroll_propagation”というのが、

    "include/lvgl/src/lv_widgets/lv_list.h"
    このファイル内にあるということが検索からわかり、lv_demo_widgets.cに

    #include "src/lv_widgets/lv_list.h"


    この行を追加することでビルドが成功しました。まだ、いくつか警告文が出ていることは調べていきたいと思います。
    また、リンカの設定に関してもこれから勉強していきたいと思います。

Your answer might help someone💌