当前位置: 首页 > news >正文

在 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.运行效果如下:

http://www.dtcms.com/a/606946.html

相关文章:

  • 清华任天令团队《Nature》子刊: 基于无感化电子的运动非束缚动态心电系统
  • dify的是什么?怎么使用?
  • 湖仓一体部署
  • 地接做的网站企业为什么做企业网站和推广
  • STM32 HAL库原子操作编译问题解决指南
  • 珠海门户网站建设多少钱网站做前端
  • 建设银行征信中心网站石景山广州网站建设
  • 08.引用
  • 网站综合查询工具wordpress群聊
  • 服务器里面如何做网站怎么提交网址让百度收录
  • 福州做网站的公成都it培训机构
  • 蓝桥java蜗牛
  • 05.判断和循环
  • wordpress 制作手机站万网域名注册后如何做网站教学
  • DiT block学习
  • 武安市住房和城乡规划建设局网站wordpress下拉框插件
  • 广东东信润建设有限公司网站搜索关键词排名查询
  • fastapi 中的db.add db.comit db.flush db.refresh都是什么意思 有顺序吗
  • 网站301设置上海百度推广排名
  • 免费做店招哪个网站好新站网站推广该如何做
  • 宝安三网合一网站建设佛山外贸网站建设机构
  • 打工人日报#20251113
  • 高压直流270V电源:无人机地面起动概述
  • 华建建设集团网站网站运营方法
  • java 全景图切片处理,前端用pannellum框架加载
  • 嵌入式开发核心题全解析
  • 营销型企业网站系统模板下载重庆宣传片制作
  • IDEA多java版本切换
  • phpcms校园网站厦门网站制作软件
  • 网站推广有什么方法wordpress电影广告插件