我的芯片是esp32c3,我在自己的ble_logical.c文件里面用到了一些API函数,如esp_ble_gap_start_advertising()、esp_ble_gap_stop_advertising();看了一下,是在idf的esp_gap_ble_api.c、esp_gap_ble_api.h里面定义声明的,我也把.h文件包含进来了,但是编译报错如下图:
麻烦指导一下,十分感谢!
看起来,好像是CMake没有把ble库链接进来导致的,请问,我是需要修改cmake?还是menuconfig哪里还需要配置?如果是要修改cmake的话,我要修改工程下的cmakelists.txt还是main/下的cmakelists.txt?[已解决] 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
你 menuconfig 里把 蓝牙 打开了吗?
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
有打开,你看一下,这样配置有没问题
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Component config → Bluetooth → Bluedroid Options 下把 Enable BLE 4.2 features 打开。
这个问题,其实你可以自己反向推出来:
1、esp_ble_gap_start_advertising 在文件 esp_gap_ble_api.c 内
2、esp_ble_gap_start_advertising 被 #if (BLE_42_FEATURE_SUPPORT == TRUE) 包着
3、然后再追 BLE_42_FEATURE_SUPPORT,可以知道其依赖于 CONFIG_BT_BLE_42_FEATURES_SUPPORTED
4、搜索 BT_BLE_42_FEATURES_SUPPORTED 可以找到 Kconfig,你就知道是哪个配置项要打开
这个问题,其实你可以自己反向推出来:
1、esp_ble_gap_start_advertising 在文件 esp_gap_ble_api.c 内
2、esp_ble_gap_start_advertising 被 #if (BLE_42_FEATURE_SUPPORT == TRUE) 包着
3、然后再追 BLE_42_FEATURE_SUPPORT,可以知道其依赖于 CONFIG_BT_BLE_42_FEATURES_SUPPORTED
4、搜索 BT_BLE_42_FEATURES_SUPPORTED 可以找到 Kconfig,你就知道是哪个配置项要打开
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
十分感谢你的解答,根据你的分析,我去看了一下,确实需要BLE_42_FEATURE_SUPPORT 为TRUE,但是我后面到menuconfig打开了BLE 4.2 features,但还是报一样的错;起初我怀疑是我的项目的问题,于是我使用helloworld工程测试了一下,也是同样的错误;ESP_Gargamel wrote: ↑Thu Jul 08, 2021 9:22 amComponent config → Bluetooth → Bluedroid Options 下把 Enable BLE 4.2 features 打开。
这个问题,其实你可以自己反向推出来:
1、esp_ble_gap_start_advertising 在文件 esp_gap_ble_api.c 内
2、esp_ble_gap_start_advertising 被 #if (BLE_42_FEATURE_SUPPORT == TRUE) 包着
3、然后再追 BLE_42_FEATURE_SUPPORT,可以知道其依赖于 CONFIG_BT_BLE_42_FEATURES_SUPPORTED
4、搜索 BT_BLE_42_FEATURES_SUPPORTED 可以找到 Kconfig,你就知道是哪个配置项要打开
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
那你整一个可复现问题的最小工程过来,包括 sdkconfig。
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
非常感谢,不过问题解决了,一开始即使我把enable 4.2 feature打开依然报错的原因是:在工程build 文件夹下有之前配置的残留;后面我把build清空,第一次配置就把enable 4.2 feature打开,然后编译就一次通过了
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Re: [已解决] 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
非常感谢,我也遇到同样的问题,必须要同时把4.2 feature 和 5.0 feature都打开才能编译通过。
Who is online
Users browsing this forum: No registered users and 89 guests