Page 1 of 1
[已解决] 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 8:17 am
by joseph_ji
我的芯片是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文件包含进来了,但是编译报错如下图:
- OPFXIY{%RKT6R93CT9%@E~C.png (96.74 KiB) Viewed 11539 times
看起来,好像是CMake没有把ble库链接进来导致的,请问,我是需要修改cmake?还是menuconfig哪里还需要配置?如果是要修改cmake的话,我要修改工程下的cmakelists.txt还是main/下的cmakelists.txt?
麻烦指导一下,十分感谢!
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 8:34 am
by ESP_Gargamel
你 menuconfig 里把 蓝牙 打开了吗?
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 8:44 am
by joseph_ji
ESP_Gargamel wrote: ↑Thu Jul 08, 2021 8:34 am
你 menuconfig 里把 蓝牙 打开了吗?
有打开,你看一下,这样配置有没问题
- 448WA3NM8U_$@UFX@57{~AS.png (13.11 KiB) Viewed 11530 times
- R)(~SZQ}H(GXCKJ_PQXJ50N.png (5.11 KiB) Viewed 11530 times
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 9:22 am
by ESP_Gargamel
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,你就知道是哪个配置项要打开
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 10:38 am
by joseph_ji
ESP_Gargamel wrote: ↑Thu Jul 08, 2021 9:22 am
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,你就知道是哪个配置项要打开
十分感谢你的解答,根据你的分析,我去看了一下,确实需要BLE_42_FEATURE_SUPPORT 为TRUE,但是我后面到menuconfig打开了BLE 4.2 features,但还是报一样的错;起初我怀疑是我的项目的问题,于是我使用helloworld工程测试了一下,也是同样的错误;
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 10:56 am
by ESP_Gargamel
那你整一个可复现问题的最小工程过来,包括 sdkconfig。
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Thu Jul 08, 2021 1:00 pm
by joseph_ji
ESP_Gargamel wrote: ↑Thu Jul 08, 2021 10:56 am
那你整一个可复现问题的最小工程过来,包括 sdkconfig。
非常感谢,不过问题解决了,一开始即使我把enable 4.2 feature打开依然报错的原因是:在工程build 文件夹下有之前配置的残留;后面我把build清空,第一次配置就把enable 4.2 feature打开,然后编译就一次通过了
Re: 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Mon Sep 05, 2022 10:34 am
by ligping
joseph_ji wrote: ↑Thu Jul 08, 2021 1:00 pm
ESP_Gargamel wrote: ↑Thu Jul 08, 2021 10:56 am
那你整一个可复现问题的最小工程过来,包括 sdkconfig。
非常感谢,不过问题解决了,一开始即使我把enable 4.2 feature打开依然报错的原因是:在工程build 文件夹下有之前配置的残留;后面我把build清空,第一次配置就把enable 4.2 feature打开,然后编译就一次通过了
非常感谢,我也遇到这个问题,必须要把 5.0 feature 和4.2 feature都打开才可以编译通过
Re: [已解决] 使用了components里的API函数,在编译链接的时候报错undefined reference to'...'
Posted: Mon Sep 05, 2022 10:35 am
by ligping
非常感谢,我也遇到同样的问题,必须要同时把4.2 feature 和 5.0 feature都打开才能编译通过。