问题描述
我最近发现了 platform.io
的 VSC
插件,并决定试一试。以前将 Visual Studio
与 Visual Micro
插件一起使用,但遗憾的是 Mac 上的 IDE 中没有 C++ 支持。我不可能使用 Arduino IDE。
一切正常,直到我想使用 ESP8266WebServer.h
。即使我只包含头文件,也会出现编译错误。
尝试使用 Arduino 板管理器提供的库 - 仍然相同。如果我编译一个包含所有内容的空 Arduino 项目很好,但是我将项目转换为 Arduino IDE(使用 .ino 而不是 main.cpp)的同样错误
platformio.ini
文件如下:
[env:nodemcu]
platform = espressif8266
board = nodemcu
framework = arduino
lib_extra_dirs =
/Users/.../Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer
lib_deps =
bblanchon/ArduinoJson@^6.18.0
ivanseidel/LinkedList@0.0.0-alpha+sha.dac3874d28
bodmer/TFT_eSPI@^2.3.70
完整的错误消息在这里,一些警告很好。
包含声明在这里:In file included from src/WeatherServer/WeatherServer.cpp:3
Compiling .pio/build/nodemcu/src/WeatherServer/WeatherServer.cpp.o
In file included from .pio/libdeps/nodemcu/TFT_eSPI/TFT_eSPI.h:811,from include/display.h:4,from include/Overlay.h:4,from include/WeatherServer.h:4,from src/WeatherServer/WeatherServer.cpp:1:
.pio/libdeps/nodemcu/TFT_eSPI/Extensions/Smooth_font.h:47:23: warning: 'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
47 | fs::FS &fontFS = SPIFFS;
| ^~~~~~
In file included from .pio/libdeps/nodemcu/TFT_eSPI/Processors/TFT_eSPI_ESP8266.h:35,from .pio/libdeps/nodemcu/TFT_eSPI/TFT_eSPI.h:67,from src/WeatherServer/WeatherServer.cpp:1:
/Users/strautins/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:275:15: note: declared here
275 | extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.")));
| ^~~~~~
In file included from /Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h:30,from /Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer.h:340,from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:69:28: error: expected ')' before '&' token
69 | StaticRequestHandler(FS& fs,const char* path,const char* uri,const char* cache_header)
| ~ ^
| )
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:88:5: error: 'FS' does not name a type; did you mean 'SS'?
88 | FS _fs;
| ^~
| SS
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:102:37: error: expected ')' before '&' token
102 | StaticDirectoryRequestHandler(FS& fs,const char* cache_header)
| ~ ^
| )
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:106:5: error: expected unqualified-id before '{' token
106 | {}
| ^
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h: In member function 'bool esp8266webserver::StaticDirectoryRequestHandler<ServerType>::handle(esp8266webserver::StaticDirectoryRequestHandler<ServerType>::WebServerType&,HTTPMethod,const String&)':
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:150:9: error: 'File' was not declared in this scope; did you mean 'fs::File'?
150 | File f = SRH::_fs.open(path,"r");
| ^~~~
| fs::File
In file included from .pio/libdeps/nodemcu/TFT_eSPI/Processors/TFT_eSPI_ESP8266.h:35,from src/WeatherServer/WeatherServer.cpp:1:
/Users/strautins/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:52:7: note: 'fs::File' declared here
52 | class File : public Stream
| ^~~~
In file included from /Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h:30,from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:151:14: error: 'f' was not declared in this scope; did you mean 'fs'?
151 | if (!f)
| ^
| fs
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:154:14: error: 'f' was not declared in this scope; did you mean 'fs'?
154 | if (!f.isFile()) {
| ^
| fs
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:162:27: error: 'f' was not declared in this scope; did you mean 'fs'?
162 | server.streamFile(f,contentType,requestMethod);
| ^
| fs
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h: At global scope:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:179:32: error: expected ')' before '&' token
179 | StaticFileRequestHandler(FS& fs,const char* cache_header)
| ~ ^
| )
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:182:5: error: expected unqualified-id before '{' token
182 | {
| ^
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h: In member function 'bool esp8266webserver::StaticFileRequestHandler<ServerType>::handle(esp8266webserver::StaticFileRequestHandler<ServerType>::WebServerType&,const String&)':
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:207:9: error: 'File' was not declared in this scope; did you mean 'fs::File'?
207 | File f = SRH::_fs.open(SRH::_path,from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:209:14: error: 'f' was not declared in this scope; did you mean 'fs'?
209 | if (!f)
| ^
| fs
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:212:14: error: 'f' was not declared in this scope; did you mean 'fs'?
212 | if (!f.isFile()) {
| ^
| fs
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h:222:27: error: 'f' was not declared in this scope; did you mean 'fs'?
222 | server.streamFile(f,mime::getContentType(SRH::_path),requestMethod);
| ^
| fs
In file included from /Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer.h:340,from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h: At global scope:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h:258:73: error: 'FS' has not been declared
258 | void ESP8266WebServerTemplate<ServerType>::serveStatic(const char* uri,FS& fs,const char* cache_header) {
| ^~
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h:258:6: error: no declaration matches 'void esp8266webserver::ESP8266WebServerTemplate<ServerType>::serveStatic(const char*,int&,const char*,const char*)'
258 | void ESP8266WebServerTemplate<ServerType>::serveStatic(const char* uri,const char* cache_header) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer.h:121:8: note: candidate is: 'void esp8266webserver::ESP8266WebServerTemplate<ServerType>::serveStatic(const char*,fs::FS&,const char*)'
121 | void serveStatic(const char* uri,fs::FS& fs,const char* cache_header = NULL );
| ^~~~~~~~~~~
In file included from src/WeatherServer/WeatherServer.cpp:3:
/Users/strautins/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.0/libraries/ESP8266WebServer/src/ESP8266WebServer.h:92:7: note: 'class esp8266webserver::ESP8266WebServerTemplate<ServerType>' defined here
92 | class ESP8266WebServerTemplate
| ^~~~~~~~~~~~~~~~~~~~~~~~
*** [.pio/build/nodemcu/src/WeatherServer/WeatherServer.cpp.o] Error 1
=========================================================== [Failed] Took 1.44 seconds ===========================================================
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)