如何解决我在 VS Code 上获得了对 DHT22 库中函数的未定义引用我如何解决它?
我有一个项目,涉及 ESP32 从 DHT22 收集温度和湿度数据。我正在尝试使用从 github 下载的外部 DHT22 库的功能。 当我尝试构建我的代码以在 ESP32 上测试它时,我得到了对函数的未定义引用,如此 image 所示。我该如何解决这个问题?
main.c:
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "rom/ets_sys.h"
#include "nvs_flash.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include "DHT22.h"
void DHT_task(void *pvParameter)
{
setDHTgpio( 4 );
printf( "Starting DHT Task\n\n");
while(1) {
printf("=== Reading DHT ===\n" );
int ret = readDHT();
errorHandler(ret);
printf( "Hum %.1f\n",getHumidity() );
printf( "Tmp %.1f\n",getTemperature() );
vTaskDelay( 3000 / portTICK_RATE_MS );
}
}
void app_main()
{
nvs_flash_init();
vTaskDelay( 1000 / portTICK_RATE_MS );
xTaskCreate( &DHT_task,"DHT_task",2048,NULL,5,NULL );
}
tasks.json:
{
"version": "2.0.0","tasks": [
{
"label": "Build - Build project","type": "shell","command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py build","windows": {
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py build","options": {
"env": {
"PATH": "${env:PATH};${config:idf.customExtraPaths}"
}
}
},"options": {
"env": {
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
}
},"problemMatcher": [
{
"owner": "cpp","fileLocation": [
"relative","${workspaceFolder}"
],"pattern": {
"regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file": 1,"line": 2,"column": 3,"severity": 4,"message": 5
}
},{
"owner": "cpp","fileLocation": "absolute","pattern": {
"regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","message": 5
}
}
],"group": {
"kind": "build","isDefault": true
}
},{
"label": "Set ESP-IDF Target","command": "${command:espIdf.setTarget}","problemMatcher": {
"owner": "cpp","pattern": {
"regexp": "^(.*):(//d+):(//d+)://s+(warning|error)://s+(.*)$","message": 5
}
}
},{
"label": "Clean - Clean the project","command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py fullclean","windows": {
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py fullclean","message": 5
}
}
]
},{
"label": "Flash - Flash the device","command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} -b ${config:idf.flashBaudRate} flash","windows": {
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py flash -p ${config:idf.portWin} -b ${config:idf.flashBaudRate}",{
"label": "Monitor: Start the monitor","command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} monitor","windows": {
"command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py -p ${config:idf.portWin} monitor","dependsOn": "Flash - Flash the device"
},{
"label": "OpenOCD: Start openOCD","presentation": {
"echo": true,"reveal": "never","focus": false,"panel": "new"
},"command": "openocd -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}","windows": {
"command": "openocd.exe -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}","pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",{
"label": "adapter","command": "${config:idf.pythonBinPath}","isBackground": true,"options": {
"env": {
"PATH": "${env:PATH}:${config:idf.customExtraPaths}","PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter"
}
},"problemMatcher": {
"background": {
"beginsPattern": "\bDEBUG_ADAPTER_STARTED\b","endsPattern": "DEBUG_ADAPTER_READY2CONNECT","activeOnStart": true
},"pattern": {
"regexp": "(\\d+)-(\\d+)-(\\d+)\\s(\\d+):(\\d+):(\\d+),(\\d+)\\s-(.+)\\s(ERROR)","file": 8,"message": 9
}
},"args": [
"${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter_main.py","-e","${workspaceFolder}/build/${command:espIdf.getProjectName}.elf","-s","${command:espIdf.getOpenOcdScriptValue}","-ip","localhost","-dn","${config:idf.adapterTargetName}","-om","connect_to_instance","-I","C:\\Users\\vorte\\ESP-IDF\\Projects\\hello_world\\main",],"windows": {
"command": "${config:idf.pythonBinPathWin}","options": {
"env": {
"PATH": "${env:PATH};${config:idf.customExtraPaths}","PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter"
}
}
}
}
]
}
c_cpp_properties.json:
{
"configurations": [
{
"name": "ESP-IDF","compilerPath": "${default}","cStandard": "c11","cppStandard": "c++17","includePath": [
"${config:idf.espIdfPath}/components/**","${config:idf.espIdfPathWin}/components/**","${workspaceFolder}/**","C:\\Users\\vorte\\ESP-IDF\\Projects\\hello_world\\main"
],"browse": {
"path": [
"${config:idf.espIdfPath}/components","${config:idf.espIdfPathWin}/components","${workspaceFolder}","C:\\Users\\vorte\\ESP-IDF\\Projects\\hello_world\\main"
],"limitSymbolsToIncludedHeaders": false
}
}
],"version": 4
}
解决方法
将 DHT22 c 文件添加到主文件夹内的 CMAKElist 文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。