Domain-Adresse in eine IP-Adresse umwandeln

Ich wiederhole mich ja nur ungern, abe Du musst schon alle zusätzlichen Dinger der DNS-Lib entfernen. Oder zumindest auskommentieren.
Dann läßt sich der Sketch sehr wohl compilieren.

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 178, 177 };
byte dns[] = { 8,8,8,8 };
byte gateway[] = { 192, 168, 178, 150 };
byte sub[] = { 255, 255, 255, 0 };

int ret;

void setup() {
   Serial.begin(9600);
  Ethernet.begin(mac, ip, dns, gateway, sub);
   Serial.print("TEST "); 
//DNSClient dns;
 char host[] = "http://www.google.de";
 IPAddress remote_addr;
 IPAddress server_ip = ( 8, 8, 8, 8 ); // Google DNS
 //dns.begin(server_ip);
 //ret = dns.getHostByName(host, remote_addr);
 Serial.print("Ausgabe "); 
 Serial.print(remote_addr);
 }

 void loop()
{
 
 }

Es ist nicht so, dass der DNS-Server an 3. Stelle stehen muss. Es kommt darauf an, wie viele Parameter zur Verfügung gestellt werden. Wenn Parameter fehlen, oder nicht benötigt werden, kann die Reihenfolge sich verschieben. Kannst du selber ausprobieren, wenn du etwas falsch machst, wir gleich vom Prog. gemeckert,

Das sich die Parameter ändern, ja nach Anzahl ist richtig, aber laut Doku gilt bei 3 Parametern:

Ethernet.begin(mac, ip, dns);

Woher soll bitte der Compiler wissen, was mit "dns" gemeint ist? Für den Compiler ist das nur eine Variable die entweder ein Array oder ein IPAddress Objekt ist. Also bitte woher hast Du die Information, das bei 3 Parametern der 3. Parameter das Subnet sein soll?

Bezüglich des Vorwurfs ich sollte die Sachen die ich poste doch ausprobieren. Bisher hast Du noch keine Quelle Deine DNS-Lib gepostet. Woher sollen wir also wissen welche Lib Du da verwendest. Ein Link wäre da hilfreich.

Wenn Du die Lib verwenden willst, reicht es sicherlich die Variablen anders zu benennen:

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

byte mymac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte myip[] = { 192, 168, 178, 177 };
byte mydns[] = { 8,8,8,8 };
byte mygateway[] = { 192, 168, 178, 150 };
byte mysub[] = { 255, 255, 255, 0 };

int ret;

void setup() {
   Serial.begin(9600);
  Ethernet.begin(mymac, myip, mydns, mygateway, mysub);
   Serial.print("TEST "); 
 DNSClient dns;
 char host[] = "www.google.de";
 IPAddress remote_addr;
 IPAddress server_ip = ( 8, 8, 8, 8 ); // Google DNS
 dns.begin(server_ip);
 ret = dns.getHostByName(host, remote_addr);
 Serial.print("Ausgabe "); 
 Serial.print(remote_addr);
 }

 void loop()
{
 
 }

ACHTUNG Dieser Code ist ungetestet, weil ich Deine DNS-Lib nicht habe.
Weiterhin habe ich mal das char host[] = "www.google.de"; richtig gesetzt. Du willst einen Hostnamen auflösen, das ist NUR "www.google.de", das HTTP:// davor ist ein Protokoll das für eine bestimmte Art steht wie dann mit dem Server geredet werden soll, das hat nichts mit Hostnamen zutun.