在 VSCode 中:lvgl库函数和lv_drivers以静态链接库的形式参与c应用项目的运行
一、之前的效果展示
1.之前我已经按照官方和网上的资料,已经搭建了模拟器运行,也能够正常显示效果。
参考资料如下:
VScode中模拟lvgl运行环境配置:
https://blog.csdn.net/qq_25657125/article/details/154018478
VSCode版LVGL模拟器:移植Guider生成的代码:
https://blog.csdn.net/qq_25657125/article/details/154021483
2.之前搭建的效果展示:

二、为什么要用静态链接库(lvgl 和 lv_drivers)
1.需求来源
1.Leader发了一个demo工程,让将之前搭建的环境采用静态链接库的方式去加载lvgl 和 lv_drivers,demo工程如下图所示:



我对比了一下我的lv_port_pc_eclipse-release-v8.3工程和Leader提供的demo中lvgl库,确实我的工程多了很多.c源文件

Leader发给我的步骤是:
1.安装MinGW:使用mingwInstaller.exe安装MinGW
2.将SDL2-devel-2.32.4-mingw.zip压缩包中的cmake和x86_64-w64-mingw32目录复制覆盖到上一步安装的mingw64目录下
3.环境变量中添加MinGW环境,比如MinGW安装在C盘,则在环境变量中添加"C:\mingw64\bin;C:\mingw64\x86_64-w64-mingw32\bin;"
4.将prebuilts.zip解压到C盘根目录下,如果解压到其它地方,则需要后期修改test_lvgl工程中的build.bat文件中的CROSS_TOOL参数
5.运行test_lvgl工程下的build.bat编译lvgl工程
2.因为我之前已经搭建了环境,只有prebuilts.zip没按照要求做,我把prebuilts.zip解压到C盘根目录下之后即可。
3.运行项目中build.bat,即可生成执行文件exe,在bin目录下面,双击exe,即可展示效果。


2.为什么要用动态链接库
1.因为到时候我们的linux产品中会有一个lvgl和lv_drivers库,存在于系统中,我们上层c应用中不包含这两个库,这样体积小。
2.因为到时候升级lvgl和lv_drivers库,只需要升级系统中的库,不需要升级每个应用中的库。
三、如何在我们自已的工程实现环境搭建呢?
1.首先找到我们之前搭建的lv_port_pc_eclipse-release-v8.3工程,在根目录创建lib文件夹,并且将静态链接库拷贝进去(leader给的工程中有)。

2.将leader发的demo工程中两个dll文件拷贝我们工程的bin目录。

3.将lv_port_pc_eclipse-release-v8.3根目录下lvgl和lv_drivers文件删除,复制leader给的工程lvgl和lv_drivers文件到我们的目录下:

3.在lv_port_pc_eclipse-release-v8.3根目录CMakeLists.txt中配置
cmake_minimum_required(VERSION 3.10)
project(lvgl)
set(CMAKE_C_STANDARD 11)#C11
set(CMAKE_CXX_STANDARD 17)#C17
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 只添加项目根目录到包含路径
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
# 递归收集所有头文件(.h)到 INCLUDES 变量
file(GLOB_RECURSE INCLUDES "main/custom/*.h" "main/generated/*.h" "main/generated/guider_customer_fonts/*.h")
# 递归收集所有源文件(.c)到 SOURCES 变量
file(GLOB_RECURSE SOURCES "main/custom/*.c" "main/generated/*.c" "main/generated/guider_customer_fonts/*.c" "main/generated/guider_fonts/*.c" "main/generated/images/*.c")# 添加lvgl和lv_drivers 两个子目录到包含路径
include_directories(lvgl lv_drivers)
# 指定链接库的目录
link_directories(lib)
link_libraries(lvgl lv_drivers)SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
SET(CMAKE_CXX_FLAGS "-O3")# 添加UTF-8编码支持
add_compile_options(-finput-charset=UTF-8)
add_compile_options(-fexec-charset=UTF-8)find_package(SDL2 REQUIRED SDL2)
include_directories(${SDL2_INCLUDE_DIRS})
add_executable(main main.c mouse_cursor_icon.c ${SOURCES} ${INCLUDES})
add_compile_definitions(LV_CONF_INCLUDE_SIMPLE)
target_link_libraries(main PRIVATE SDL2 )
add_custom_target (run COMMAND ${EXECUTABLE_OUTPUT_PATH}/main)
4.运行时,如下效果:
TFT Simulator显示异常

四、修复TFT Simulator显示异常
1.将leader工程中lv_conf.h和lv_drv_conf.h文件拷贝到lv_port_pc_eclipse-release-v8.3根目录下,实际上lv_port_pc_eclipse-release-v8.3根目录下有这两个文件,但是需要替换

2.运行效果如下:

