完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我希望使用lvgl里的demo,将demos文件添加构建,但是出现了undefined reference to xxx的错误,以及warning: implicit declaration of function ‘lv_demo_music’警告 |
|
相关推荐
6个回答
|
|
有个比较笨的方法:在lv_demo_music函数内添加 #error “xxxxx”,编译的时候看是否显示出来,检查lv_demo_music函数是不是真的参与编译了,然后进一步分析。
|
|
|
|
![]() 在源文件lv_demo_music.c中加入了#error “xxx”但是编译时却没有弹出错误#error “xxx”,看起来像是没有被编译进去。 但是在编译的命令行中却有这个文件,而且确实生成了.o文件,请问这是什么情况? ![]() |
|
|
|
![]() 请确认这个宏控是否打开? 没打开的话,下面的逻辑都没参与编译。另外我查看发现其他的.c文件也用到了这个宏,你需要确认下正确打开此宏控的方法。 |
|
|
|
可以确认是宏定义的问题现在,当我注释了宏定义用#if 1代替以后出现不同的报错,应该是未注释前宏定义导致没有编译条件编译导致的 ![]() 但是这种情况更加令人疑惑,studio里面显示宏展开结果为1 ![]() 头文件的关系是这样的 lv_demo_music.c —- lv_demo_music.h —- lv_conf.h,在lv_conf.h中包含了LV_USE_DEMO_MUSIC这个宏,并且已经打开 ![]() 但是似乎源文件就是编译不进去 |
|
|
|
你这种情况,大概率是因为LV_USE_DEMO_MUSIC宏,并没有在整个工程里被声明。
这种情况有两种解决方案: 1.在一个通用头文件里添加 #define LV_USE_DEMO_MUSIC 1, 你在lv_conf.h里添加,有可能别的.c文件并没有包含到你的lv_conf.h,你可以自行分析下哪些头文件里是通用的。 2.gcc编译器在编译的时候,可以通过添加 -DLV_USE_DEMO_MUSIC=1 编译条件,保证全局通用。 你可以查阅下studio编译工具有没有类似的方法,我记得gcc、keil都是有的。 |
|
|
|
通过添加编译条件解决了这个问题,问题产生的原因也搞清楚了一部分。 ![]() 在lv_conf.h中加入了#error “xxx”发现最终文件也被编译成功,意味着lv_cong.h根本没有参与到文件的编译中来。这个问题我怀疑是一些编译设置导致的。 可能在rtthread中,根本不需要lv_conf的设置,这个我后续会更加深入了解 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
933 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
1859 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1056 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board上OSPI-Flash实践
1511 浏览 0 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3741 浏览 0 评论
64907 浏览 21 评论
嵌入式热门DIY项目:智能机器人开源资料合集(原理图、代码、论文)
67659 浏览 22 评论
57632 浏览 32 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 07:55 , Processed in 0.496513 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191