使用vs运行lvgl模拟器的一点小问题:
在LVGL模拟器的项目中包含我们自己的c文件和头文件,看到那三个打横杠的文件没,这个就是我们自己的文件,右键点击,然后选择“包括在项目中”
在LVGL.Simulator.cpp文件的main函数里找到合适的添加我们自己的显示函数的地方,如图:
我的函数就是这个lv_mainstart(也就是正点原子给出的例程中的函数)
当然还要修改一下头文件的依赖关系。这个就不说了。
开始运行,发现报错误 LNK2019 无法解析的外部符号 以及 lnk1120
百思不得其解。
试了半天,答案是:
在我们自己的头文件lv_mainstart.h中加入
#ifdef __cplusplus
extern "C" {
#endif
。。。(中间是自己的头文件内容)
#ifdef __cplusplus
} /* extern "C" */
#endif
两段代码,就可以正常运行啦。
原理是:为了在C++代码中调用用C写成的库文件,就需要用extern "C"来告诉编译器:这是一个用C写成的库文件。
因为不能使用cpp编译器去编译c文件,因而要加上extern "C"告诉编译器应当以C的方式来链接它们。
extern "C"链接指示的这种形式包含一个关键字extern,后面是一个字符串值常量,以及普通的函数声明。因为关联C语言,所以添加"C"。 为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C。
为了链接多个声明,在链接指示后面跟上花括号若干声明从而一次性建立多个连接。
因此多重声明用于整个头文件可以在头文件夹中如是引用。