Errors when compiling ESP32 Wifi libraries

Hi Im new to PlatformIO. Projects that compile on the Arduino IDE and have been ported to PlatformIO
report lots of errors.

          ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\ssl_client.cpp: In function 'int start_ssl_client(sslclient_context*, const char*, uint32_t, int, const char*, const char*, const char*, const char*, const char*)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\ssl_client.cpp:65:9: error: 'WiFiGenericClass' has not been declared
     if(!WiFiGenericClass::hostByName(host, srv)){
Archiving .pio\build\esp32dev\lib7bb\libWiFi_ID870.a
         ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In constructor 'WiFiClientSecure::WiFiClientSecure()':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:33:5: error: '_connected' was not declared in this scope
     _connected = false;
     ^

Was just wondering why.

Can you please provide the platformio.ini and the main file you are trying to compile? And please provide either the entire output or at least the start of it (up to and including the first few error messages).

Pro tip: But the code and output between triple backquotes (```) to format it for easier reading.

Just a shot in the dark: Does your project have a file named wifi.h (possibly with some uppercase letters)?

1 Like

'Hi
Thanks for the response
This is my include files

#include <Arduino.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include "time.h"
#include "Pushover.h"
#include <Bounce2.h>
#include <EEPROM.h>
#include <WiFiUdp.h>

The platformio.ini file

[env:esp32dev]

platform = espressif32

board = esp32dev

framework = arduino

The Compiler output

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION  docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 1.10.0 > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: toolchain-xtensa32 2.50200.80 (5.2.0), framework-arduinoespressif32 2.10003.190916 (1.0.3), tool-esptoolpy 1.20600.0 (2.6.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 45 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Pushover>
|   |-- <WiFiClientSecure> 1.0
|   |   |-- <WiFi> 1.2.7
|   |   |   |-- <SPI> 1.0
|-- <Time> 1.5
|-- <Bounce2> 2.52
|-- <EEPROM> 1.0.3
|-- <PubSubClient> 2.7
|-- <WiFi> 1.2.7
|   |-- <SPI> 1.0
Compiling .pio\build\esp32dev\src\mqtt_esp32_beam_new.cpp.o
Compiling .pio\build\esp32dev\lib7bb\WiFi_ID870\WiFi.cpp.o
Compiling .pio\build\esp32dev\lib3c3\WiFiClientSecure\WiFiClientSecure.cpp.o
Compiling .pio\build\esp32dev\lib3c3\WiFiClientSecure\ssl_client.cpp.o
src\mqtt_esp32_beam_new.cpp: In function 'void setup()':
src\mqtt_esp32_beam_new.cpp:137:52: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     Push_Over("Beam ESP has Started/Reset","bike",0);
                                                    ^
src\mqtt_esp32_beam_new.cpp:137:52: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
src\mqtt_esp32_beam_new.cpp: In function 'void setup_wifi()':
src\mqtt_esp32_beam_new.cpp:176:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     WiFi.begin(ssid, password);
                              ^
src\mqtt_esp32_beam_new.cpp: In function 'void Triggers_do()':
src\mqtt_esp32_beam_new.cpp:239:76: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
                 Push_Over("Beam back TRIGGERD From 8pm til 7Am", "siren", 0); //
                                                                            ^
src\mqtt_esp32_beam_new.cpp:239:76: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
src\mqtt_esp32_beam_new.cpp:268:77: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
                 Push_Over("Beam front TRIGGERD From 8pm til 7Am", "siren", 0); //
                                                                             ^
src\mqtt_esp32_beam_new.cpp:268:77: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
src\mqtt_esp32_beam_new.cpp:298:78: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
                 Push_Over("Beam garage TRIGGERD From 8pm til 7Am", "siren", 0); //
                                                                              ^
src\mqtt_esp32_beam_new.cpp:298:78: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
src\mqtt_esp32_beam_new.cpp: In function 'byte Push_Over(char*, char*, char)':
src\mqtt_esp32_beam_new.cpp:455:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In constructor 'WiFiClientSecure::WiFiClientSecure()':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:33:5: error: '_connected' was not declared in this scope
     _connected = false;
     ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In constructor 'WiFiClientSecure::WiFiClientSecure(int)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:50:5: error: '_connected' was not declared in this scope
     _connected = false;
     ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'WiFiClientSecure& WiFiClientSecure::operator=(const WiFiClientSecure&)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:80:5: error: '_connected' was not declared in this scope
     _connected = other._connected;
     ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:80:24: error: 'const class WiFiClientSecure' has no member named '_connected'
     _connected = other._connected;
                        ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'virtual void WiFiClientSecure::stop()':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:89:9: error: '_connected' was not declared in this scope
         _connected = false;
         ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'int WiFiClientSecure::connect(const char*, uint16_t, const char*, const char*, const char*)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:136:5: error: '_connected' was not declared in this scope
     _connected = true;
     ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'int WiFiClientSecure::connect(const char*, uint16_t, const char*, const char*)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:156:5: error: '_connected' was not declared in this scope
     _connected = true;
     ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'virtual size_t WiFiClientSecure::write(const uint8_t*, size_t)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:185:10: error: '_connected' was not declared in this scope
     if (!_connected) {
          ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'virtual int WiFiClientSecure::available()':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:229:10: error: '_connected' was not declared in this scope
     if (!_connected) {
          ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp: In member function 'virtual uint8_t WiFiClientSecure::connected()':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\WiFiClientSecure.cpp:245:12: error: '_connected' was not declared in this scope
     return _connected;
            ^
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\ssl_client.cpp: In function 'int start_ssl_client(sslclient_context*, const char*, uint32_t, int, const char*, const char*, const char*, const char*, const char*)':
C:\Users\Jurgens\.platformio\packages\framework-arduinoespressif32\libraries\WiFiClientSecure\src\ssl_client.cpp:65:9: error: 'WiFiGenericClass' has not been declared
     if(!WiFiGenericClass::hostByName(host, srv)){
         ^
*** [.pio\build\esp32dev\lib3c3\WiFiClientSecure\WiFiClientSecure.cpp.o] Error 1
*** [.pio\build\esp32dev\lib3c3\WiFiClientSecure\ssl_client.cpp.o] Error 1
========================================================= [FAILED] Took 13.88 seconds =========================================================
The

You seem to have at least two WiFi libraries in your environment and they both contain a WiFi.h file. PlatformIO has picked up the wrong WiFi library and the WiFiClientSecure library has included the wrong WiFi.h file.

It is therefore time to switch to a more explicit dependency management:

  • Delete all directories in C:\Users\Jurgens\.platformio\lib
  • Delete the .pio directory in your project
  • Add these lines to platformio.ini
lib_deps =
    PubSubClient
    Bounce2
    https://github.com/ArduinoHannover/Pushover.git

(I’m not sure I’ve selected the correct Pushover library. If you modified it, you can put it into the lib directory in your project folder.)

When you build it, you should see a dependency graph like so:

Dependency Graph
|-- <PubSubClient> 2.7
|-- <Bounce2> 2.52
|-- <Pushover> #dc480d7
|   |-- <WiFiClientSecure> 1.0
|   |   |-- <WiFi> 1.0
|-- <EEPROM> 1.0.3
|-- <WiFi> 1.0

Note version 1.0 of the WiFi library. If you get version 1.2.7, the wrong library was picked up.

If you add a library in the future, do NOT click Install in PlatformIO’s library management. Even though it’s the most prominent button, it affects all projects and can easily create conflicts like this one. Instead click on the Installation tab and copy one of the lines below lib_deps into platformio.ini to create a file as shown above.

For libraries that are not available online or need to be modified: copy them into the lib folder within your project (NOT into lib inC:\Users\Jurgens\.platformio\lib)

And for formatting code: use backticks (and not single quotes). Without formatting the code, the dependency graph is missing all the information in angle brackets. I’ve edited your post to fix it. Your name sounds Dutch. So if you have a Dutch keyboard, I believe the back tick can be found two keys right from the L key - pressing the SHIFT key and adding a space as it’s a dead key.

1 Like

Thanks for all the information. It has solved the problem. Makes a lot of sense.

Dependency Graph
|-- <PubSubClient> 2.7
|-- <Pushover>
|   |-- <WiFiClientSecure> 1.0
|   |   |-- <WiFi> 1.0
|-- <WiFi> 1.0
|-- <Bounce2> 2.52
|-- <EEPROM> 1.0.3
Compiling .pio\build\esp32dev\src\mqtt_esp32_beam_new.cpp.o
Archiving .pio\build\esp32dev\libb30\libPubSubClient_ID89.a

just trying the back ticks

2 Likes

Es correcto, tenia el mismo problema, el proyecto al compilar con Arduino IDE funcionaba correctamente, al migrar a Platformio el ESP32 nunca se lograba conectar a la red WiFi local, todo era ocasionado por tener dos librerías WiFi.h instaladas.

Desinstale una de ellas y el proyecto funciona correctamente.

1 Like