ESP32踩坑记2-组件链接的未定义

发现问题

开发ESP32的时候,当我使用多个组件的时候,编译的时候出现两个问题

    1. Task/Task_Gui.c:13: undefined reference to `lvgl_driver_init’
    1. However, the component manager is not enabled

解决问题1

但是我去找这个文件的时候,发现, lvgl_driver_init();这个函数是17行的
在这里插入图片描述
我检查了CMakeLists.txt文件,发现一切配置没有任何问题。
在这里插入图片描述
**解决办法:**对比别人的工程发现,在根目录下的CMakeLists.txt文件中有一行,添加到我的文件中就可以了。

set(__PROJECT_GROUP_LINK_COMPONENTS ON)

问了chatGPT,这是原话
当你设置 set(__PROJECT_GROUP_LINK_COMPONENTS ON):

链接行为改变:这可能改变了组件之间的链接行为。在某些情况下,如果没有正确链接相关的组件,可能会出现找不到引用的函数或变量的情况。这个设置可能启用了一种机制,使得组件之间更容易或以不同的方式链接。

内部变量:由于这个变量的名称以双下划线 (__) 开头,它看起来像是一个内部使用的变量。这意味着它可能不是为最终用户设计的,而是 ESP-IDF 内部使用的。因此,它可能会影响构建系统的某些内部行为。

解决特定问题:在你的情况下,使用这个设置可能解决了组件管理器的警告问题,这表明它以某种方式影响了组件的发现或链接过程。

解决问题2

在**.vscode\settings.json**文件夹添加

"idf.enableIdfComponentManager":  true,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值