这是我的头文件
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <SoftwareSerial.h>
#include <dds238.h>
我使用 ESPAsyncWebServer.h 作为 jsonrequest 将数据发送到我的 IP。 我正在使用 WifiManger 来自动化 wifi 连接,因此我不需要对 wifi 凭证进行硬编码,但是为此我必须使用 ESP8266WebServer.h 和 WiFiManager.h。我被困在这个问题上一个多星期了。 我收到的错误:
In file included from src\main.cpp:31:
.pio\libdeps\esp12e\ESPAsyncWebServer-esphome\src/ESPAsyncWebServer.h:62:18: error: 'HTTP_GET' conflicts with a previous declaration
62 | HTTP_GET = 0b00000001,
您不必在草图中提供其他库使用的库的包含内容。 WiFiManager 库包含其依赖项,Arduino 构建系统将检测这些库。
删除
#include <ESP8266WebServer.h>
以避免与 ESP8266WebServer 库中的 HTTP_GET 枚举值冲突。
当我尝试将 WifiManager 库包含在我的启动和运行代码中时,我遇到了一些问题
我在开发ESP8266时遇到了同样的问题,问题的关键是,
WiFiManager
和ESPAsyncWebServer
有相同的WebRequestMethod
宏,好消息是ESPAsyncWebServer
定义了这样的WEBSERVER_H
宏条件编译。
#ifndef WEBSERVER_H
typedef enum {
HTTP_GET = 0b00000001,
HTTP_POST = 0b00000010,
HTTP_DELETE = 0b00000100,
HTTP_PUT = 0b00001000,
HTTP_PATCH = 0b00010000,
HTTP_HEAD = 0b00100000,
HTTP_OPTIONS = 0b01000000,
HTTP_ANY = 0b01111111,
} WebRequestMethod;
#endif
所以,你只需要在include
WEBSERVER_H
之前定义ESPAsyncWebServer.h
,就不会出现冲突问题了。
#include <WiFiManager.h>
WiFiManager wifiManager;
#define WEBSERVER_H
#include <ESPAsyncWebServer.h>