vs运行lvgl模拟器出现LNK1120LNK2019的解决办法

使用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。

为了链接多个声明,在链接指示后面跟上花括号若干声明从而一次性建立多个连接。

因此多重声明用于整个头文件可以在头文件夹中如是引用。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值