编译ThingsBoard示例代码提示TBPubSubClient.h缺失的求助
解决ThingsBoard Arduino示例编译错误:找不到TBPubSubClient.h
问题概述
编译ThingsBoard官方Arduino示例代码时出现头文件缺失错误,已尝试重新安装依赖库、确认Windows用户名为英文、重装Arduino IDE等操作,问题仍未解决。
编译错误信息
In file included from C:\Users\YAZILIMM\AppData\Local\Temp.arduinoIDE-unsaved2023913-7500-15j0apg.1lt4\0002-arduino_rpc\0002-arduino_rpc.ino:9: d:\Belgeler\Arduino\libraries\ThingsBoard\src/Arduino_MQTT_Client.h:10:10: fatal error: TBPubSubClient.h: No such file or directory #include <TBPubSubClient.h> ^~~~~~~~~~~~~~~~~~ compilation terminated. exit status 1 Compilation error: exit status 1
解决步骤
1. 确保ThingsBoard库完整安装
TBPubSubClient.h是ThingsBoard库的内部文件,若库下载不完整会导致缺失:
- 打开Arduino IDE的库管理器,找到ThingsBoard库,先移除再重新安装最新版本
- 若库管理器安装仍有问题,手动下载库的完整源码,解压到Arduino的
libraries文件夹中替换原有文件
2. 移除多余的库引用
Arduino_MQTT_Client.h属于ThingsBoard库的组成部分,无需单独引入,删除代码中的#include <Arduino_MQTT_Client.h>,仅保留#include <ThingsBoard.h>即可。
3. 修正开发板匹配与代码逻辑
原代码开头的条件编译存在语法错误,且需确保开发板选择与代码兼容:
- 在Arduino IDE工具菜单中,选择你实际使用的开发板(ESP8266/ESP32/Pico等)
- 修正代码开头的条件编译部分,补全
#ifdef ESP8266:
#ifdef ESP8266 #include <ESP8266WiFi.h> #define THINGSBOARD_ENABLE_PROGMEM 0 #elif defined(ESP32) || defined(RASPBERRYPI_PICO) || defined(RASPBERRYPI_PICO_W) #include <WiFi.h> #endif
4. 清理IDE缓存
- 关闭Arduino IDE,删除
C:\Users\YAZILIMM\AppData\Local\Temp下所有以arduinoIDE-开头的临时文件夹 - 重新打开IDE,加载代码后再次编译
内容的提问来源于stack exchange,提问作者Ali Riza
相关产品推荐
相关产品推荐

