Esp8266 / esp32 with Arduinos ethernet.h library problem

Hello! I’m trying to begin to use PlatformIO, but for my needs it’s essential to get an ethernet library working. with the Arduino IDE i was able to use the ethernet library of Arduinos Compilation (stoffregens ethernet lib) but when i try to use a simple example-project like LinkStatus (code below) it won’t compile and i get a lot of errors… what could i do? thanks in advance for your time <3
the code:

#include <Arduino.h>
/*
  Link Status
  This sketch prints the ethernet link status. When the
  ethernet cable is connected the link status should go to "ON".
  NOTE: Only WizNet W5200 and W5500 are capable of reporting
  the link status. W5100 will report "Unknown".
  Hardware:
   - Ethernet shield or equivalent board/shield with WizNet 5200/5500
  Written by Cristian Maglie
  This example is public domain.
*/

#include <SPI.h>
#include <Ethernet.h>

void setup() {
  // You can use Ethernet.init(pin) to configure the CS pin
  Ethernet.init(15);  // ESP8266 with Adafruit Featherwing Ethernet

  Serial.begin(9600);
}

void loop() {
  auto link = Ethernet.linkStatus();
  Serial.print("Link status: ");
  switch (link) {
    case Unknown:
      Serial.println("Unknown");
      break;
    case LinkON:
      Serial.println("ON");
      break;
    case LinkOFF:
      Serial.println("OFF");
      break;
  }
  delay(1000);
}

part of the output (Some got cut because output was too big):

In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dhcp.cpp:7:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:464:0: warning: "ntohl" redefined [enabled by default]
#define ntohl(x) htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dhcp.cpp:5:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:122:0: note: this is the location of the previous definition
#define ntohl(x) lwip_ntohl(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:8:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:6:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:24:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:8:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:6:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:24:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\socket.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:8:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\socket.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetUdp.cpp:32:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:457:0: warning: "htons" redefined [enabled by default]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:6:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:121:0: note: this is the location of the previous definition
#define htonl(x) lwip_htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:24:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetUdp.cpp:30:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:119:0: note: this is the location of the previous definition
#define htons(x) lwip_htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\socket.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:121:0: note: this is the location of the previous definition
#define htonl(x) lwip_htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:8:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:464:0: warning: "ntohl" redefined [enabled by default]
#define ntohl(x) htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetUdp.cpp:32:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:458:0: warning: "ntohs" redefined [enabled by default]
#define ntohs(x) htons(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Dns.cpp:6:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:122:0: note: this is the location of the previous definition
#define ntohl(x) lwip_ntohl(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:24:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:464:0: warning: "ntohl" redefined [enabled by default]
#define ntohl(x) htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\socket.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetUdp.cpp:30:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:120:0: note: this is the location of the previous definition
#define ntohs(x) lwip_ntohs(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetClient.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:122:0: note: this is the location of the previous definition
#define ntohl(x) lwip_ntohl(x)
^
In file included from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/ip_addr.h:41:0,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\include/ipv4_addr.h:38,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/arch/cc.h:93,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/arch.h:48,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/debug.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwipopts.h:3575,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/opt.h:51,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/init.h:40,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/IPAddress.h:27,
from C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Client.h:24,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\Ethernet.h:52,
from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetServer.cpp:22:
C:\Users\Sir_A\.platformio\packages\framework-arduinoespressif8266\tools\sdk\lwip2\include/lwip/def.h:121:0: note: this is the location of the previous definition
#define htonl(x) lwip_htonl(x)
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\EthernetUdp.cpp:32:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^
In file included from C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\socket.cpp:23:0:
C:\Users\Sir_A\.platformio\lib\Ethernet_ID872\src\utility/w5100.h:460:0: warning: "htonl" redefined [enabled by default]
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
^

Try setting platform = espressif8266@1.8.0 in your platformio.ini, which will switch you back to the v2.4.2 Arduino ESP8266 core. There appear to be known issues with v2.5.0 and the Ethernet library, which should be fixed in v2.5.1

1 Like

awesome, thanks for the fast reply, works like a charm! do you maybe know how to fix it for the esp32 platform?

Fantastic.

For the esp32, I’d just start rolling back the versions from the current 1.8.0 … i.e. for the second last version…

platform = espressif32@1.7.0

You can see the list of releases here…

1 Like

works too, really great, thanks for the insight! best wishes =)

1 Like

I am running into similar issues with ESP32 today - is it still required to roll back to 1.7.0? Seems to be a long time since without motion to me…

The use of EthernetServer and EthernetClient is still impossible, for a line of

EthernetServer server(23);

I get thrown

error: cannot declare variable 'server' to be of abstract type 'EthernetServer'
 EthernetServer server(23);
                ^
In file included from src\main.cpp:10:0:
C:/Users/Micha/.platformio/lib/Ethernet_ID872/src/Ethernet.h:253:7: note:   because the following virtual functions are pure within 'EthernetServer':     
 class EthernetServer : public Server {
       ^
In file included from C:/Users/Micha/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:152:0,
                 from src\main.cpp:1:
C:/Users/Micha/.platformio/packages/framework-arduinoespressif32/cores/esp32/Server.h:28:18: note:      virtual void Server::begin(uint16_t)
     virtual void begin(uint16_t port=0) =0;

As noted in this library’s repository: It is a known bug. Arduino-core and Arduino-ESP32 people couldn’t aggree upon whether it was correct of Arduino-ESP32 to change the original Arduino API and don’t think they need to adapt their library, but Arduino-ESP32 should fix their code. According to Virtual functions in client.h are out of line with standard Arduino API · Issue #2755 · espressif/arduino-esp32 · GitHub, this has finally happened partially for one function, but the bug about connect() remains.

But again you can just take the code from the pull-request and see if it works for you.

  1. remove the Ethernet library from your global library repository (C:/Users/Micha/.platformio/lib/Ethernet_ID872)
  2. In your platformio.ini declare:
lib_deps = 
   Ethernet=https://github.com/cnSchwarzer/Ethernet.git

and retry compilation.

1 Like

Thank you very much! I have missed the reference you cited, else I would not have complained :wink:

I will do as you advised.

Thanks again - the compile now finishes - albeit with some warnings about int connect() having no return statement. A look into the code reveals that is true - would not that harm any function relying on the return codes? connect() is used repeatedly in the lib assuming it returns a value.

Wow even supposedly “fixed” code is broken. Jesus Christ.

No that’s actually a problem because it can provoke undefined behavior and the firmware can crash… Connect should return a proper return code according to the Arduino specifications.

I’ve fixed the library as good as a I can – connect() can only return 0 or 1 anyways because that’s the only implemented return values of the underlying connect function. But it should be good enough as an error indication.

To use the new fixed library, delete the old folder in .pio\libdeps\<environment name>\Ethernet and adapt the platformio.ini with:

lib_deps = 
   Ethernet=https://github.com/maxgerhardt/Ethernet.git

Then the WebClient demo compiles without warnings for me.

1 Like

:slight_smile:
I did a change myself and offered it in a comment on the commit in cnSchwarzer’s repository. I even tried to post a commit myself, but I have never worked with Github before, so I am not sure if that succeeded.

My change is a bit less elaborate, but since setConnectionTimeout does nothing else but giving the _timeout variable a value, I think it will work as well:

#ifdef ESP32
	int connect(IPAddress ip, uint16_t port, int timeout)
	{
		setConnectionTimeout(timeout);
		return connect(ip, port);
	}
	int connect(const char* host, uint16_t port, int timeout)
	{
		setConnectionTimeout(timeout);
		return connect(host, port);
	}
#endif

There I wasn’t sure whether the order of the function calls is important – can connect change the values set by setConnectionTimeout, e.g. to some default values? Didn’t want to play with that, that’s why I left that order in its original form (see Fix return codes for connect() · maxgerhardt/Ethernet@c9399a9 · GitHub).

Does it work with actual hardware now?

Yes, it does, if a little brittle only - it is still on a breadboard with patch wires and the power supply is slightly on the meager side… :smiley:

I turned to your fork, for your objection is valid.

By the way: Einen schönen Gruß nach Bochum(?)! :wink:

Right indeed :wink:

Off-topic addendum: The ESP32 has a built-in Ethernet peripheral (MAC) which you can connect to an Ethernet PHY chip via the RMII (Reduced media-independent interface) protocol, which is in turn connected to the physical ethernet jack / magjack. ESP-IDF has an example. For HW see e.g. the OLIMEX ESP32 gateway boards. The schematics are also available. The PHY costs about 0,80€ and a RJ45 jack with built-in or external magnetics can’t also cost that much – should all be much cheapter than a W5500 chip costing 2€ plus a RJ45 jack.

1 Like

I read about that, but it looked too adventurous to me. Given the price of the DIN rail box (~25€, plus another 10€ for a DIN rail power supply) I will be using for the device the cost reduction is neglectable.

Off topic: Ich wohne bei Frankfurt/M., komme aber aus GE :wink:.

A very late observation: initializing the W5500 without DHCP actually works fine, but a call to Ethernet.linkStatus() will always return a LINK_OFF state regardless.

1 Like