如何修复 PlatformIO ESP8266 ArduinoOTA error: stopAll is not a member of WiFiUDP

问题:

编译 PlatformIO 固件时,你看到类似这样的错误消息

arduinoota_build_error.txt
/home/uli/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA/ArduinoOTA.cpp: In member function 'void ArduinoOTAClass::_runUpdate()':
/home/uli/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA/ArduinoOTA.cpp:268:12: error: 'stopAll' is not a member of 'WiFiUDP'
    268 |   WiFiUDP::stopAll();
            |            ^~~~~~~

解决方案

platform.inilib_deps 部分删除 WiFi。修复前:

platformio.ini.before
lib_deps =
    ESP Async Webserver@1.2.3
    ArduinoJSON@6.17.2
    WiFi

修复后:

platformio.ini.after
lib_deps =
    ESP Async Webserver@1.2.3
    ArduinoJSON@6.17.2

现在检查你的源代码并替换任何

wifi_include_fix.cpp
#include <WiFi.h>

wifi_include_fix_after.cpp
#include <ESP8266WiFi.h>

以防止 如何修复 PlatformIO ESP8266 WiFi.h: No Such File or Directory 中所述的 WiFi.h: No Such File or Directory 问题

现在你需要从项目目录中完全删除 .pio 文件夹以确保干净构建:

clean_pio.sh
rm -rf .pio

之后,重新编译你的固件


Check out similar posts by category: Arduino, Electronics, ESP8266/ESP32, PlatformIO