完善资料让更多小伙伴认识你,还能领取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的设置,这个我后续会更加深入了解 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-5-28 01:02 , Processed in 0.957229 second(s), Total 126, Slave 109 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 粤ICP备 14022951 号