按理说是一个比较简单的操作,但是自己捣鼓了比较长的时间。自己是使用vs2022运行LVGL模拟器,然后在vscode上编辑代码。按照下面的参考链接里面的教程走:
LVGL学习之路——模拟器的搭建,使用button做出第一个ui界面_模拟器搭建ui-CSDN博客
lvgl在PC上模拟自己的代码_lvglpc模拟加入自己的代码-CSDN博客
注意:代码要在模拟器项目里的lvgl文件夹中修改,之前我太傻逼了,在下载的LVGL项目中修改,以为模拟器会自动找到自己下载的LVGL项目,实在太傻了。
然后参考官方的demo和example,可以在examples中创建,貌似也可以在demos文件夹中创建,给出自己的文件夹lv_cmy_test,在这个文件夹中创建.c和.h文件,代码如下所示
/**
* @file lv_cmy_test.h
*
*/
#ifndef LV_CMY_TEST_H
#define LV_CMY_TEST_H
#ifdef __cplusplus
extern "C" {
#endif
/*********************
* INCLUDES
*********************/
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
void lv_cmy_test_btn(void);
/**********************
* MACROS
**********************/
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif
// lv_cmy_test_btn代码参考的lv_example_get_started_1显示hello world
#include "../lv_examples.h"
void lv_cmy_test_btn(void)
{
// lv_obj_t* btn1 = lv_btn_create(lv_scr_act(), NULL);
/*Change the active screen's background color*/
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);
/*Create a white label, set its text and align it to the center*/
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "Hello world cmy");
lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}
然后给lv_examples.h添加上lv_cmy_test.h(如果是在demos就修改lv_demos.h)。
然后在LvglWindowsSimulator.cpp添加上自己之前定义的函数(在lv_cmy_test.h中的那个),然后再去vs2022中运行模拟器即可。
然后会发现报错:说无法解析lv_cmy_test_btn,但是我们确实定义了这个函数,我在这个问题上耽误了好长时间,因为我是在vscode上进行代码的修改,没有关注过vs2022,然后我去vs2022查看代码,发现了问题。
生成开始于 8:38... 1>------ 已启动生成: 项目: LvglWindowsSimulator, 配置: Debug x64 ------ NuGet 包还原失败。请查看“错误列表”窗口了解详细警告和错误。 还原 NuGet 程序包时出错: 由于无法加载项目 LvglWindowsSimulator 的详细信息,操作失败。 1>LvglWindowsSimulator.obj : error LNK2019: 无法解析的外部符号 lv_cmy_test_btn,函数 main 中引用了该符号 1>D:\GithubCode\lv_port_pc_visual_studio\Mile.Project.Windows..\Output\Binaries\Debug\x64\LvglWindowsSimulator.exe : fatal error LNK1120: 1 个无法解析的外部命令 1>已完成生成项目“LvglWindowsSimulator.vcxproj”的操作 - 失败。 ========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ========== ========== 生成 于 8:38 完成,耗时 02.956 秒 ==========
在vs2022的LvglWindowsSimulator.cpp中,ctrl + 鼠标左键点击对应的函数,会自动跳转到之前定义的lv_cmy_test.h中
把鼠标放上去会发现没有找到函数的定义,然后点击修复,会让你在cpp中创建这个函数,我们按照他的建议修改,会自动生成同名的lv_cmy_test.cpp文件,并自动创建函数等待填入内容。至此,就可以正常运行了。我也不知道为什么cpp文件可以,而c文件不可以,不管这么多了,就按照他的建议修改了,只要能运行自己写的demo就可以了。