完善资料让更多小伙伴认识你,还能领取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的设置,这个我后续会更加深入了解 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
541 浏览 0 评论
1920 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2188 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统威廉希尔官方网站 与产业发展论坛”圆满结束
2681 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
29139 浏览 11 评论
72212 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:40 , Processed in 0.552255 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号