Error when compiling project after adding ESPWebServer.h

I am trying to compile this project. It compiles fine when the ESPWebServer.h include (and all its references such as “server.” functions) are removed. But when I add them in I think I am getting functions being defined multiple times but I cant locate them as the error message isnt the most easy to read.

#include <Arduino.h>
#include <FastLED.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EasyNTPClient.h>
#include <WiFiUdp.h>
#include <Time.h>
#include <TimeLib.h>
#include "index.h"


#define NUM_LEDS 79
#define DATA_PIN D3

CRGBArray<NUM_LEDS> leds;

// Initialize changeable global variables.
uint8_t max_bright = 128;  // Overall brightness definition. It can be changed on the fly.
uint8_t brightness = 128;
uint8_t hue = 160;
uint8_t sat = 255;

//LED Positions
const int ledWords = 23;
int ledPos[ledWords][2] = {
  {0,1}, //IT 0
  {2,2}, //IS 1
  {3,4}, //TEN 2
  {5,7}, //HALF 3
  {8,12}, //TWENTY 4
  {13,18}, //QUARTER 5
  {19,21}, //FIVE 6
  {22,27}, //MINUTES 7
  {36,37}, //TO 8  
  {33,35}, //PAST 9
  {74,78}, //TWELVE 10
  {31,32}, //ONE 11
  {28,30}, //TWO 12
  {38,41}, //THREE 13
  {42,44}, //FOUR 14 
  {45,47}, //FIVE 15 
  {56,58}, //SIX 16
  {52,55}, //SEVEN 17
  {48,51}, //EIGHT 18
  {59,61}, //NINE 19
  {62,63}, //TEN 20
  {64,68}, //ELEVEN 21
  {69,73} //OCLOCK 22
};

//Time Handling
time_t unix_time;
int hour_t = 12;
int minute_t = 40;
int second_t;
int hour_12;
int NTP_fail_cnt = 0;
bool NTP_failure = false;
bool daylight_saving = true; //daylight savings is in summer, add 1hr in summer.

//WiFi Settings
const char *ssid     = "my-network";
const char *password = "mypassword";
const IPAddress ip(192,168,178,50);
const IPAddress gateway(192,168,178,1);
const IPAddress subnet(255,255,255,0);

//For NTP
WiFiUDP udp;
EasyNTPClient ntpClient(udp, "uk.pool.ntp.org", (0*60*60));

//Setup WebServer on port 80
ESP8266WebServer server(80);

//Functions
void displayRange(int ledPosArray[2]) {
  for(int i = ledPosArray[0]; i <= ledPosArray[1]; i++){
      leds[i] = CHSV(hue, sat, 255);
      //Serial.print("Set led: ");
      //Serial.println(i);
    } 
  //FastLED.show();
  return;
}

void clearRange(int ledPosArray[2]) {
  for(int i = ledPosArray[0]; i <= ledPosArray[1]; i++){
      leds[i] = CHSV(hue, sat, 0);
    }
  //FastLED.show(); 
  return;
}

void clearAll() {
  for(int i = 0; i < NUM_LEDS; i++){
      leds[i] = CHSV(hue, sat, 0);
    } 
  displayRange(ledPos[0]);//Turn on it
  displayRange(ledPos[1]); //Turn on is
  displayRange(ledPos[22]); //Turn on oclock
  Serial.print("Clearing all...");
  FastLED.show();
  Serial.println("Cleared");
  return;
}

void testLEDs() {
  //Code for incremenetally turning on leds
  for(int cnt = 0; cnt < NUM_LEDS; cnt++) {
    leds[cnt] = CHSV(hue, sat, 255);
    FastLED.show();
    Serial.print("Set led: ");
    Serial.println(cnt);
  }
}

void testWords() {
  //Code for incrementally turning on words
  for(int i = 0; i < ledWords; i++){
   //clearAll();
   displayRange(ledPos[i]);
   delay(750);    
  }
}

void handleRoot() {
 String s = MAIN_page; //Read HTML contents
 server.send(200, "text/html", s); //Send web page
}

void handleDlsOn() {
  daylight_saving = true;
}

void handleDlsOff() {
  daylight_saving = false;
}

void setup() {
  //Setup serial
  Serial.begin(115200);

  //Setup LEDs
  FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.setBrightness(max_bright);
  FastLED.setMaxPowerInVoltsAndMilliamps(5, 1000);              // FastLED power management set at 5V, 500mA

  //Start WiFi
  //WiFi.config(ip, gateway, subnet);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());

  //WebServer starting
  server.on("/", handleRoot);  //Which routine to handle at root location
  server.on("/dlsOn", handleDlsOn);
  server.on("/dlsOff", handleDlsOff);
  server.begin();
  Serial.println("HTTP server started");

  //Turn on the basics
  displayRange(ledPos[0]);//Turn on it
  displayRange(ledPos[1]); //Turn on is
  displayRange(ledPos[22]); //Turn on oclock

  unix_time = ntpClient.getUnixTime();
  setTime(unix_time);
  Serial.println("Set time on startup");
}

void loop() {

  //Handle WebServer requests
  server.handleClient();

  //Get time from EasyNTPClient and format using Time
  unix_time = ntpClient.getUnixTime();
  Serial.println(unix_time);

  //Only update if the ntp is correct
  if(unix_time != 0){
    Serial.println("Time updated");
    if(daylight_saving == false){
      setTime(unix_time);
    }
    else{
      setTime(unix_time + 3600);
    }
    
    NTP_fail_cnt = 0;
  }
  else {
    Serial.print("Time failed to update cnt: ");
    NTP_fail_cnt++;
    Serial.println(NTP_fail_cnt);
  }

  //If it fails more than 360 times/60 minutes flag failure
  if(NTP_fail_cnt >= 360) { 
    NTP_failure = true;
    clearRange(ledPos[0]);//Turn on it
    clearRange(ledPos[1]); //Turn on is
    clearRange(ledPos[22]); //Turn on oclock
  }
  else {
    if(NTP_failure == true){
      displayRange(ledPos[0]);//Turn on it
      displayRange(ledPos[1]); //Turn on is
      displayRange(ledPos[22]); //Turn on oclock
      NTP_failure = false;
    }
  }
  
  //Print for debug
  Serial.print("The date is: ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.println(year());

  //Function to get hour and minute
  hour_t = hour();
  minute_t = minute();

  //Print time for debug
  Serial.print("The time is: ");
  Serial.print(hour_t);
  Serial.print(" ");
  Serial.println(minute_t);

  //Set the correct hour
  //If past half past (to) add an hour
  if(minute_t >= 33){
    hour_t = hour_t + 1;
    //When past 23:30, hour will go to 24, correct back to 12
    if(hour_t == 24){
      hour_t -= 12;
    }
  }

  // Convert hours from 24h to 12h
  if(hour_t >= 12) {
    hour_12 = hour_t - 12;
  }
  else {
    hour_12 = hour_t;
  }
  Serial.print("hour_12 is: ");
  Serial.println(hour_12);

  //Clear hours
  for(int i = 10; i <= 21; i++) {
    clearRange(ledPos[i]);
  }

  //Display the hour, taking a 0 register (9) and adding the hour
  displayRange(ledPos[(10 + hour_12)]);
  Serial.print("Setting hour range: ");
  Serial.println(10 + hour_12);

  //Clear minutes
  for(int i = ledPos[2][0]; i <= ledPos[7][1]; i++){
    leds[i] = CHSV(hue, 255, 0);
  }

  //Set the correct minutes

  if((minute_t >= 3 and minute_t < 8) or (minute_t >= 53 and minute_t < 58)){
     displayRange(ledPos[6]);
     displayRange(ledPos[7]); //Set minutes text
  }
  else if((minute_t >= 8 and minute_t < 13) or (minute_t >= 48 and minute_t < 53)){
    displayRange(ledPos[2]);
    displayRange(ledPos[7]); //Set minutes text
  }
  else if((minute_t >= 13 and minute_t < 18) or (minute_t >= 43 and minute_t < 48)){
    displayRange(ledPos[5]);
    clearRange(ledPos[7]); //Clear minutes text
  }
  else if((minute_t >= 18 and minute_t < 23) or (minute_t >= 38 and minute_t < 43)){
    displayRange(ledPos[4]);
    displayRange(ledPos[7]); //Set minutes text
  }
  else if((minute_t >= 23 and minute_t < 28) or (minute_t >= 33 and minute_t < 38)){
   displayRange(ledPos[4]);
   displayRange(ledPos[6]);
   displayRange(ledPos[7]); //Set minutes text
  }
  else if(minute_t >= 28 and minute_t < 33){
    displayRange(ledPos[3]);
    clearRange(ledPos[7]); //Clear minutes text
  }

  //Set to and past
  if(minute_t < 33 and minute_t >= 3) {
    //Clear to and display past
    clearRange(ledPos[8]);
    displayRange(ledPos[9]);
  }
  else if(minute_t >= 33 and minute_t < 58) {
    //Clear past and display to
    clearRange(ledPos[9]);
    displayRange(ledPos[8]);
  }
  else {
    //Clear past and to
    clearRange(ledPos[8]);
    clearRange(ledPos[9]);
  }

  FastLED.show(); //Show all the information
  delay(10000);
  Serial.println("End of tasks");        

}

The error message produced on build attempt looks like this:

> Executing task in folder WordClock: C:\Users\danny\.platformio\penv\Scripts\platformio.exe run <

Processing d1_mini (platform: espressif8266; board: d1_mini; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini.html
PLATFORM: Espressif 8266 (2.6.3) > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 3.20704.0 (2.7.4)
 - tool-esptool 1.413.0 (4.13)
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa 2.40802.200502 (4.8.2)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 35 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <WiFi> 1.2.7
|   |-- <SPI> 1.0
|-- <FastLED> 3.3.3
|   |-- <SPI> 1.0
|   |-- <EspSoftwareSerial> 6.8.5
|-- <EasyNTPClient> 1.1.0
|-- <Time> 1.6.0
|-- <ESP8266WebServer> 1.0
|   |-- <WiFi> 1.2.7
|   |   |-- <SPI> 1.0
|   |-- <ESP8266WiFi> 1.0
Building in release mode
Compiling .pio\build\d1_mini\src\main.cpp.o
In file included from src\main.cpp:2:0:
.pio\libdeps\d1_mini\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.003
 #    pragma message "FastLED version 3.003.003"
                     ^
In file included from .pio\libdeps\d1_mini\FastLED/FastLED.h:65:0,
                 from src\main.cpp:2:
.pio\libdeps\d1_mini\FastLED/fastspi.h:130:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output
 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
                       ^
Linking .pio\build\d1_mini\firmware.elf
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::write(unsigned char)':
WiFiClient.cpp:(.text._ZN10WiFiClient5writeEh+0x0): multiple definition of `WiFiClient::write(unsigned char)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient5writeEh+0x0): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::peek()':
WiFiClient.cpp:(.text._ZN10WiFiClient4peekEv+0x0): multiple definition of `WiFiClient::peek()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient4peekEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::connect(char const*, unsigned short)':
WiFiClient.cpp:(.text._ZN10WiFiClient7connectEPKct+0x10): multiple definition of `WiFiClient::connect(char const*, unsigned short)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient7connectEPKct+0x10): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::available()':
WiFiClient.cpp:(.text._ZN10WiFiClient9availableEv+0x4): multiple definition of `WiFiClient::available()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient9availableEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::operator bool()':
WiFiClient.cpp:(.text._ZN10WiFiClientcvbEv+0x0): multiple definition of `WiFiClient::operator bool()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClientcvbEv+0x0): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::connected()':
WiFiClient.cpp:(.text._ZN10WiFiClient9connectedEv+0x4): multiple definition of `WiFiClient::connected()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient9connectedEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::write(unsigned char const*, unsigned int)':
WiFiClient.cpp:(.text._ZN10WiFiClient5writeEPKhj+0xc): multiple definition of `WiFiClient::write(unsigned char const*, unsigned int)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient5writeEPKhj+0x8): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::read()':
WiFiClient.cpp:(.text._ZN10WiFiClient4readEv+0x4): multiple definition of `WiFiClient::read()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient4readEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::read(unsigned char*, unsigned int)':
WiFiClient.cpp:(.text._ZN10WiFiClient4readEPhj+0x8): multiple definition of `WiFiClient::read(unsigned char*, unsigned int)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient4readEPhj+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::WiFiClient()':
WiFiClient.cpp:(.text._ZN10WiFiClientC2Ev+0xc): multiple definition of `WiFiClient::WiFiClient()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClientC2Ev+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::WiFiClient()':
WiFiClient.cpp:(.text._ZN10WiFiClientC2Ev+0xc): multiple definition of `WiFiClient::WiFiClient()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClientC2Ev+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::connect(IPAddress, unsigned short)':
WiFiClient.cpp:(.text._ZN10WiFiClient7connectE9IPAddresst+0x68): multiple definition of `WiFiClient::connect(IPAddress, unsigned short)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient7connectE9IPAddresst+0x28): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiClient.cpp.o): in function `WiFiClient::status()':
WiFiClient.cpp:(.text._ZN10WiFiClient6statusEv+0x4): multiple definition of `WiFiClient::status()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiClient.cpp.o):WiFiClient.cpp:(.text._ZN10WiFiClient6statusEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::write(unsigned char)':
WiFiServer.cpp:(.text._ZN10WiFiServer5writeEh+0x0): multiple definition of `WiFiServer::write(unsigned char)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServer5writeEh+0x0): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::write(unsigned char const*, unsigned int)':
WiFiServer.cpp:(.text._ZN10WiFiServer5writeEPKhj+0x0): multiple definition of `WiFiServer::write(unsigned char const*, unsigned int)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServer5writeEPKhj+0x10): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::WiFiServer(unsigned short)':
WiFiServer.cpp:(.text._ZN10WiFiServerC2Et+0xc): multiple definition of `WiFiServer::WiFiServer(unsigned short)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServerC2Et+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::WiFiServer(unsigned short)':
WiFiServer.cpp:(.text._ZN10WiFiServerC2Et+0xc): multiple definition of `WiFiServer::WiFiServer(unsigned short)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServerC2Et+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::status()':
WiFiServer.cpp:(.text._ZN10WiFiServer6statusEv+0x0): multiple definition of `WiFiServer::status()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServer6statusEv+0x4): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::begin()':
WiFiServer.cpp:(.text._ZN10WiFiServer5beginEv+0x4): multiple definition of `WiFiServer::begin()'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServer5beginEv+0x10): first defined here
c:/users/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\d1_mini\lib0b1\libESP8266WiFi.a(WiFiServer.cpp.o): in function `WiFiServer::available(unsigned char*)':
WiFiServer.cpp:(.text._ZN10WiFiServer9availableEPh+0x20): multiple definition of `WiFiServer::available(unsigned char*)'; .pio\build\d1_mini\lib6a2\libWiFi.a(WiFiServer.cpp.o):WiFiServer.cpp:(.text._ZN10WiFiServer9availableEPh+0x20): first defined here
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\d1_mini\firmware.elf] Error 1
==================================================================================================================================== [FAILED] Took 3.05 seconds ====================================================================================================================================
The terminal process "C:\Users\danny\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1

All my files are in the src fodler where required and any libraries have been installed in the platformio.ini file not the lib folder as seen below.

Any help to point me in the right direction would be massively appreciated. Thanks in advance.

ESP8266WiFi conficts with WiFi it seems… it seems like you have a WiFi library globally installed that tries to speak with a NiNA module or something.

Add

lib_ignore = WiFi

to your platformio.ini. Is the error gone?

If yes, do not use global libraries because of errors exactly like that. Remove all library folders from C:\Users\<user>\.platformio\lib.

Hi maxgerhardt,

Your suggestion worked perfectly. I can now compile and upload. It crashes when I access the webserver but thats an issue for me to deal with! :joy: I suspected it was something to do with conflicting WiFi libs but I didnt know how to avoid it.

To further my knowledge, why would you not recommend the global libraries from platformio?

If you have one global library that has called its header WiFi.hand 3 other frameworks have internal WiFi libraries that should be used instead of that global lib, that’s a problem. The header names are too general and so collisions can occur. If there were no name conditions, it would be ‘better’, but still not good, because there’s no reference to the library’s name and version in the platformio.ini for 100% reproducability, which is solved by an explicit library dependency via lib_deps. So if you need that special WiFi library in only special projects, you should refer to that via lib_deps in only those projects and not use global libs for it.