SandboxElectronics / LoRaGoDOCK-Gateway

Source code for single-channel LoRaWAN Gateway based on LoRaGo DOCK (ESP8266 and SX1276)
MIT License
33 stars 14 forks source link

ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress') #7

Open remrat opened 5 years ago

remrat commented 5 years ago

Hello, Trying to flash the gateway software onto my new LoRa Go Dock. However, when I compile the code, I get the following error. Any thoughts? We are currently running ArduinoJson 5.13.4

Arduino: 1.8.8 (Windows Store 1.8.19.0) (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Build options changed, rebuilding all C:\Users\T R\Desktop\LoRaGoDOCK-Gateway-master\LoRaGoDOCK-Gateway_wwwServer.ino: In function 'void printIP(IPAddress, char, String&)':

_wwwServer:40:10: error: ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

response+=(IPAddress)ipa[0]; response+=sep;

      ^

C:\Users\T R\Desktop\LoRaGoDOCK-Gateway-master\LoRaGoDOCK-Gateway_wwwServer.ino:40:10: note: candidates are:

In file included from C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/Arduino.h:261:0,

             from sketch\LoRaGoDOCK-Gateway.ino.cpp:1:

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: String& String::operator+=(const char*)

     String & operator +=(const char *cstr) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: no known conversion for argument 1 from 'IPAddress' to 'const char*'

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:124:18: note: String& String::operator+=(char)

     String & operator +=(char c) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:128:18: note: String& String::operator+=(unsigned char)

     String & operator +=(unsigned char num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:132:18: note: String& String::operator+=(int)

     String & operator +=(int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:136:18: note: String& String::operator+=(unsigned int)

     String & operator +=(unsigned int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:140:18: note: String& String::operator+=(long int)

     String & operator +=(long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:144:18: note: String& String::operator+=(long unsigned int)

     String & operator +=(unsigned long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:148:18: note: String& String::operator+=(float)

     String & operator +=(float num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:152:18: note: String& String::operator+=(double)

     String & operator +=(double num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: String& String::operator+=(const __FlashStringHelper*)

     String & operator += (const __FlashStringHelper *str){

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: no known conversion for argument 1 from 'IPAddress' to 'const __FlashStringHelper*'

_wwwServer:41:10: error: ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

response+=(IPAddress)ipa[1]; response+=sep;

      ^

C:\Users\T R\Desktop\LoRaGoDOCK-Gateway-master\LoRaGoDOCK-Gateway_wwwServer.ino:41:10: note: candidates are:

In file included from C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/Arduino.h:261:0,

             from sketch\LoRaGoDOCK-Gateway.ino.cpp:1:

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: String& String::operator+=(const char*)

     String & operator +=(const char *cstr) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: no known conversion for argument 1 from 'IPAddress' to 'const char*'

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:124:18: note: String& String::operator+=(char)

     String & operator +=(char c) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:128:18: note: String& String::operator+=(unsigned char)

     String & operator +=(unsigned char num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:132:18: note: String& String::operator+=(int)

     String & operator +=(int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:136:18: note: String& String::operator+=(unsigned int)

     String & operator +=(unsigned int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:140:18: note: String& String::operator+=(long int)

     String & operator +=(long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:144:18: note: String& String::operator+=(long unsigned int)

     String & operator +=(unsigned long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:148:18: note: String& String::operator+=(float)

     String & operator +=(float num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:152:18: note: String& String::operator+=(double)

     String & operator +=(double num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: String& String::operator+=(const __FlashStringHelper*)

     String & operator += (const __FlashStringHelper *str){

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: no known conversion for argument 1 from 'IPAddress' to 'const __FlashStringHelper*'

_wwwServer:42:10: error: ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

response+=(IPAddress)ipa[2]; response+=sep;

      ^

C:\Users\T R\Desktop\LoRaGoDOCK-Gateway-master\LoRaGoDOCK-Gateway_wwwServer.ino:42:10: note: candidates are:

In file included from C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/Arduino.h:261:0,

             from sketch\LoRaGoDOCK-Gateway.ino.cpp:1:

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: String& String::operator+=(const char*)

     String & operator +=(const char *cstr) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: no known conversion for argument 1 from 'IPAddress' to 'const char*'

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:124:18: note: String& String::operator+=(char)

     String & operator +=(char c) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:128:18: note: String& String::operator+=(unsigned char)

     String & operator +=(unsigned char num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:132:18: note: String& String::operator+=(int)

     String & operator +=(int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:136:18: note: String& String::operator+=(unsigned int)

     String & operator +=(unsigned int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:140:18: note: String& String::operator+=(long int)

     String & operator +=(long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:144:18: note: String& String::operator+=(long unsigned int)

     String & operator +=(unsigned long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:148:18: note: String& String::operator+=(float)

     String & operator +=(float num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:152:18: note: String& String::operator+=(double)

     String & operator +=(double num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: String& String::operator+=(const __FlashStringHelper*)

     String & operator += (const __FlashStringHelper *str){

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: no known conversion for argument 1 from 'IPAddress' to 'const __FlashStringHelper*'

_wwwServer:43:10: error: ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

response+=(IPAddress)ipa[3];

      ^

C:\Users\T R\Desktop\LoRaGoDOCK-Gateway-master\LoRaGoDOCK-Gateway_wwwServer.ino:43:10: note: candidates are:

In file included from C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/Arduino.h:261:0,

             from sketch\LoRaGoDOCK-Gateway.ino.cpp:1:

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: String& String::operator+=(const char*)

     String & operator +=(const char *cstr) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:120:18: note: no known conversion for argument 1 from 'IPAddress' to 'const char*'

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:124:18: note: String& String::operator+=(char)

     String & operator +=(char c) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:128:18: note: String& String::operator+=(unsigned char)

     String & operator +=(unsigned char num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:132:18: note: String& String::operator+=(int)

     String & operator +=(int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:136:18: note: String& String::operator+=(unsigned int)

     String & operator +=(unsigned int num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:140:18: note: String& String::operator+=(long int)

     String & operator +=(long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:144:18: note: String& String::operator+=(long unsigned int)

     String & operator +=(unsigned long num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:148:18: note: String& String::operator+=(float)

     String & operator +=(float num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:152:18: note: String& String::operator+=(double)

     String & operator +=(double num) {

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: String& String::operator+=(const __FlashStringHelper*)

     String & operator += (const __FlashStringHelper *str){

              ^

C:\Users\T R\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\cores\esp8266/WString.h:156:18: note: no known conversion for argument 1 from 'IPAddress' to 'const __FlashStringHelper*'

exit status 1 ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

VictorNine commented 5 years ago

I hade the same issue. You need to use v2.4.2 of the esp8266 board lib.

tb4450 commented 5 years ago

Thanks, VictorNine. After switching to v2.4.2 compilation was successful.

ulfraaf commented 5 years ago

Hi "Nice" to find that other have same issue that I have experienced. I did not quite understand what means with "v2.4.2 of the esp8266 board lib", where can I find it and how do I then implement it. I have followed instruction in document: github - SandboxElectronics/LoRaGoDOCK-Gateway READ.md, and come so far that I ended here with this issue. So I hope that someone can help me. /Ulf

Stulander commented 4 years ago

I did not quite understand what means with "v2.4.2 of the esp8266 board lib", where can I find it and how do I then implement it.

In the Arduino IDE go to tools > board > board manager, type ESP at the top and change "esp8266 by esp8266 community" version to 2.4.2.