ESP Dev Module mit XPT2026 und XPT2026_Tochscreen.h

Hallo,
ich versuche das Beispiel der esp32-weather-station-color.ino nachzuvollziehen (Modified 2020 by Zihatec GmbH for AZ-Touch ESP with ESP32) und habe natürlich die angegebenen Libs dazu bereitgestellt. Ich stolpere allerdings beim zusammenlinken mit folgenden Fehlermeldungen:

esp32-weather-station-color.ino.cpp.o:(.literal._Z5setupv+0x24): undefined reference to XPT2046_Touchscreen::begin(SPIClass&)' esp32-weather-station-color.ino.cpp.o: in function setup()':
esp32-weather-station-color.ino:168:(.text._Z5setupv+0x5b): undefined reference to XPT2046_Touchscreen::begin(SPIClass&)' TouchControllerWS.cpp.o:(.literal._ZN17TouchControllerWS9isTouchedEs+0x0): undefined reference to XPT2046_Touchscreen::touched()'
TouchControllerWS.cpp.o:(.literal._ZN17TouchControllerWS8getPointEv+0x0): undefined reference to XPT2046_Touchscreen::getPoint()' TouchControllerWS.cpp.o: in function TouchControllerWS::isTouched(short)':
TouchControllerWS.cpp:12:(.text._ZN17TouchControllerWS9isTouchedEs+0x7): undefined reference to XPT2046_Touchscreen::touched()' TouchControllerWS.cpp.o: in function TouchControllerWS::getPoint()':
TouchControllerWS.cpp:20:(.text._ZN17TouchControllerWS8getPointEv+0x7): undefined reference to `XPT2046_Touchscreen::getPoint()'

Ich habe im Folgenden nur die Ausschnitte aus dem Code herauskopiert, um den Beitrag nicht aufzublähen, ich kann natürlich den kompletten Code nachliefern.

esp32-weather-station-color.ino:

void setup() {
  Serial.begin(115200);
  
  // switch TFT backlight on
  pinMode(TFT_LED, OUTPUT);
  digitalWrite(TFT_LED, LOW);    // HIGH to Turn on;
  
  gfx.init();
  gfx.fillBuffer(MINI_BLACK);
  gfx.commit();

  connectWifi();

  Serial.println("Initializing touch screen...");
  ts.begin(); // Aufruf der fehlerhaften Funktion (?)

  carousel.setFrames(frames, frameCount);
  carousel.disableAllIndicators();

  // update the weather information
  updateData();
  timerPress = millis();
  canBtnPress = true;
 
}

`

Hier geht's weiter mit TouchControllerWS.cpp:

TS_Point TouchControllerWS::getPoint() {
    TS_Point p = touchScreen->getPoint();
    /*
    int x = (p.y - ax) * dx;
    int y = 320 - (p.x - ay) * dy;
    p.x = x;
    p.y = y;*/
    p.x = map(p.x, TS_MINX, TS_MAXX, 0, 320);
    p.y = map(p.y, TS_MINY, TS_MAXY, 240, 0);

    return p;
}

return p;


}

Und schließlich mit XPT2046_Touchscreen:

class XPT2046_Touchscreen {
public:
	constexpr XPT2046_Touchscreen(uint8_t cspin, uint8_t tirq=255)
		: csPin(cspin), tirqPin(tirq) { }
	bool begin(SPIClass &wspi = SPI);
#if defined(_FLEXIO_SPI_H_)
	bool begin(FlexIOSPI &wflexspi);
#endif

	TS_Point getPoint();
	bool tirqTouched();
	bool touched();
	void readData(uint16_t *x, uint16_t *y, uint8_t *z);
	bool bufferEmpty();
	uint8_t bufferSize() { return 1; }
	void setRotation(uint8_t n) { rotation = n % 4; }
// protected:
	volatile bool isrWake=true;

private:
	void update();
	uint8_t csPin, tirqPin, rotation=1;
	int16_t xraw=0, yraw=0, zraw=0;
	uint32_t msraw=0x80000000;
	SPIClass *_pspi = nullptr;
#if defined(_FLEXIO_SPI_H_)
	FlexIOSPI *_pflexspi = nullptr;
#endif
};

Der ursächliche Fehler scheint in der Zeile "bool begin(SPIClass &wspi = SPI);" zu liegen, das SPI liegt an folgenden Ports:

// Pins for the ILI9341 and ESP32
#define TFT_DC 4
#define TFT_CS 5
#define TFT_LED 15
#define TFT_RST 22
#define TFT_MISO    19
#define TFT_MOSI    23
#define TFT_SCLK    18

//#define HAVE_TOUCHPAD
#define TOUCH_CS 14
//#define TOUCH_IRQ 2 // enable this line for older ArduiTouch or AZ-Touch ESP pcb
#define TOUCH_IRQ 27 // enable this line for new AZ-Touch MOD pcb

Ich verwende die Arduino IDE2.3.7. Beispiele, die mit der Bibliothek TFT_espi arbeiten, habe ich ans Laufen bekommen, aber es wird sich ja jemand etwas dabei gedacht haben die XPT2024_Touchscreen.h zu verwenden.

Für Hinweise zum Verständnis der Fehlermeldungen und deren Vermeidung sage ich schon mal vielen Dank!

Uli

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Poste mal ein Link deiner Hardware, besonders des Displays.

Gruß

Pucki

Wo zu zusatz lib wenn die TFT_eSPI hat schon eine, gehe zu Beispielen dort sind Beispiele.
Dazu kommt das die Touch Lib wo möglich ist ncht kompatibel mit dem ESP32 Core höher als 2.xx
Noch was die TFT_eSPI braucht keinen Touch IRQ. Die allerneuste TFT_eSPI funktioniert nur bis Core 3.1.1 wie habe gestern zufällig festgestellt. Persönlich nutze die letzte Zweier so wie ältere TFT_eSPI, habe keine lust meine Projekte mit Display ändern.
Wenn noch Fragen dan können w ir Morgen weiter machen.
Ach ja es gibt einen funktionierenden Beispiel für Wetter vorhersage vom Bodmer.

Steht doch alles im Beitrag, ILI 9341 also ein ab 1,8 bis 2,8 Zoll, lesen @pucki007.
Warum kann kein Größeres sein must selber herausfinden.

Aus Neugier habe mit die Wetter Station angesehen.
basiert auf OpenWeatherMap API.
Habe die lange genutzt, bis OpenWeatherMap hat die Lizenzbedingungen geändert.
Testen kann das nicht, mein Key funktioniert nicht mehr, jedoch was ich sagen kann die Tagesvorsage wer OK nur die aktuelle Werte passen nicht, ist ja rechnerische "Vorhersage".

Der Sketch verwendet 271041 Bytes (20%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 21984 Bytes (6%) des dynamischen Speichers, 305696 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

Kompiliert mit der IDE2.3.7 , ESP32 Core 3.3.5

#include <XPT2046_Touchscreen.h>
#include <SPI.h>

#define CS_PIN  8
// MOSI=11, MISO=12, SCK=13

//XPT2046_Touchscreen ts(CS_PIN);
//#define TIRQ_PIN  2
 XPT2046_Touchscreen ts(CS_PIN);  // Param 2 - NULL - No interrupts
//XPT2046_Touchscreen ts(CS_PIN, 255);  // Param 2 - 255 - No interrupts
//XPT2046_Touchscreen ts(CS_PIN, TIRQ_PIN);  // Param 2 - Touch IRQ Pin - interrupt enabled polling

void setup() {
  Serial.begin(38400);
  ts.begin();
  // ts.begin(SPI1); // use alternate SPI port
  ts.setRotation(1);
  while (!Serial && (millis() <= 1000));
}

void loop() {
  if (ts.touched()) {
    TS_Point p = ts.getPoint();
    Serial.print("Pressure = ");
    Serial.print(p.z);
    Serial.print(", x = ");
    Serial.print(p.x);
    Serial.print(", y = ");
    Serial.print(p.y);
    delay(30);
    Serial.println();
  }
}

Wenn man jedoch Beispiel "ILI9341Test" aus der Bibliothek nimmt kracht es.
Das

Kompiliert auch

Hallo,
als Hardware wird ein ESP-32_DevKit_C_V4_Datenblatt von AZ-Deliveries verwendet. Lt. ihrer Dokumentation ist als Board in der Arduino IDE "ESP32 Dev Module" auszuwählen. Auf dem Board ist ein ESP32-WROOM-32 verbaut. Die Taktfrequenz (240MHz) und die SRAM Größe (520KB) legen nahe, dass ein XTensa LX6 drin steckt. Hier der Link auf die Beschreibung: "ESP32 Dev Kit C V4 NodeMCU WLAN WiFi Development Board"
Zum Thema TFT_eSPI: ich habe ein Beispiel dieser Lib erfolgreich ausprobiert, d.h. die HW an sich funktioniert. Die Wetterstation verwendet die Lib TFT_eSPI nicht, sondern stattdessen "XPT2026_Touchscreen.h" und "TouchControllerWS".
Das Display findet man hier: "2,8 Zoll LCD TFT Touch Display - Kompatibel mit Arduino und Raspberry".

Wie gesagt, der Fehler taucht erst beim Zusammenlinken auf, da die Zuordnung der SPIClass schiefgeht - nur warum???

Uli

@fony
Ich habe den Sketch mal bei mir übersetzt - und lande bei den gleichen Fehlermeldungen wie im Sketch der Wetterstation:

FQBN: esp32:esp32:esp32
Verwende das Board 'esp32' von der Plattform im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5
Verwendung des Kerns 'esp32' von Platform im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5

cmd /c if exist "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\partitions.csv" COPY /y "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\partitions.csv" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\partitions.csv"
cmd /c if not exist "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\partitions.csv" if exist "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\variants\\esp32\\partitions.csv" COPY "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\variants\\esp32\\partitions.csv" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\partitions.csv"
cmd /c if not exist "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\partitions.csv" COPY "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\tools\\partitions\\default.csv" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\partitions.csv"
cmd /c IF EXIST "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\bootloader.bin" ( COPY /y "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\bootloader.bin" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch_jan22a.ino.bootloader.bin" ) ELSE ( IF EXIST "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\variants\\esp32\\bootloader.bin" ( COPY "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\variants\\esp32\\bootloader.bin" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch_jan22a.ino.bootloader.bin" ) ELSE ( "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esptool_py\\5.1.0\\esptool.exe" --chip esp32 elf2image --flash-mode dio --flash-freq 80m --flash-size 4MB -o "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch_jan22a.ino.bootloader.bin" "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32\\bin\\bootloader_qio_80m.elf" ) )
esptool v5.1.0
Creating ESP32 image...
Merged 2 ELF sections.
Successfully created ESP32 image.
cmd /c if exist "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\build_opt.h" COPY /y "C:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a\\build_opt.h" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\build_opt.h"
cmd /c if not exist "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\build_opt.h" type nul > "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\build_opt.h"
cmd /c type nul > "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts"
cmd /c COPY /y "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32\\sdkconfig" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sdkconfig"
        1 Datei(en) kopiert.
Verwendete Bibliotheken erkennen ...
C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2511/bin/xtensa-esp32-elf-g++ -c @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="esp32" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="windows" -DARDUINO_FQBN="esp32:esp32:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/defines -IC:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a -iprefix C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/include/ @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/includes -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/qio_qspi/include -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\cores\esp32 -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\variants\esp32 @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/build_opt.h @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp -o nul
Alternativen für XPT2046_Touchscreen.h: [XPT2046_Touchscreen]
ResolveLibrary(XPT2046_Touchscreen.h)
  -> Kandidaten: [XPT2046_Touchscreen]
C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2511/bin/xtensa-esp32-elf-g++ -c @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="esp32" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="windows" -DARDUINO_FQBN="esp32:esp32:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/defines -IC:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a -iprefix C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/include/ @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/includes -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/qio_qspi/include -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\cores\esp32 -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\variants\esp32 -Ic:\Users\reitz\Documents\Arduino\libraries\XPT2046_Touchscreen @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/build_opt.h @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp -o nul
Alternativen für SPI.h: [SPI@3.3.5]
ResolveLibrary(SPI.h)
  -> Kandidaten: [SPI@3.3.5]
C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2511/bin/xtensa-esp32-elf-g++ -c @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="esp32" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="windows" -DARDUINO_FQBN="esp32:esp32:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/defines -IC:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a -iprefix C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/include/ @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/includes -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/qio_qspi/include -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\cores\esp32 -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\variants\esp32 -Ic:\Users\reitz\Documents\Arduino\libraries\XPT2046_Touchscreen -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI\src @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/build_opt.h @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp -o nul
Verwendung von zwischengespeicherten Bibliotheksabhängigkeiten für die Datei: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI\src\SPI.cpp
Funktionsprototypen werden generiert ...
C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2511/bin/xtensa-esp32-elf-g++ -c @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32_DEV" -DARDUINO_VARIANT="esp32" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="windows" -DARDUINO_FQBN="esp32:esp32:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/defines -IC:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a -iprefix C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/include/ @C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/includes -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/qio_qspi/include -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\cores\esp32 -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\variants\esp32 -Ic:\Users\reitz\Documents\Arduino\libraries\XPT2046_Touchscreen -IC:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI\src @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/build_opt.h @C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp -o C:\Users\reitz\AppData\Local\Temp\844712577\sketch_merged.cpp
C:\Users\reitz\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\reitz\AppData\Local\Temp\844712577\sketch_merged.cpp

Sketch wird kompiliert ...
"C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp-x32\\2511/bin/xtensa-esp32-elf-g++" -MMD -c "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/cpp_flags" -Os -Werror=return-type -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DARDUINO_PARTITION_default "-DARDUINO_HOST_OS=\"windows\"" "-DARDUINO_FQBN=\"esp32:esp32:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default\"" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/defines" "-IC:\\Users\\reitz\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\\sketch_jan22a" -iprefix "C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/include/" "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/includes" "-IC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/qio_qspi/include" "-IC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\cores\\esp32" "-IC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\variants\\esp32" "-Ic:\\Users\\reitz\\Documents\\Arduino\\libraries\\XPT2046_Touchscreen" "-IC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.3.5\\libraries\\SPI\\src" "@C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/build_opt.h" "@C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch\\sketch_jan22a.ino.cpp" -o "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch\\sketch_jan22a.ino.cpp.o"
Bibliotheken werden kompiliert ...
Bibliothek "XPT2046_Touchscreen" wird kompiliert
Bibliothek "SPI" wird kompiliert
Zuvor kompilierte Datei wird verwendet: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\libraries\SPI\SPI.cpp.o
Kern wird kompiliert ...
cmd /c echo -DARDUINO_CORE_BUILD > "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts"
Verwendung des vorkompilierten Kerns: C:\Users\reitz\AppData\Local\arduino\cores\61f9418280fed2fd0f45a6fc6aa59695\core.a
cmd /c type nul > "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/file_opts"
Alles zusammenlinken...
"C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp-x32\\2511/bin/xtensa-esp32-elf-g++" "-Wl,--Map=C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/sketch_jan22a.ino.map" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/lib" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/ld" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/qio_qspi" -Wl,--wrap=esp_panic_handler "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/ld_flags" "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/ld_scripts" -Wl,--start-group "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch\\sketch_jan22a.ino.cpp.o" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\reitz\\AppData\\Local\\arduino\\cores\\61f9418280fed2fd0f45a6fc6aa59695\\core.a" "@C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.5-9bb7aa84-v2\\esp32/flags/ld_libs" -Wl,--end-group -Wl,-EL -o "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/sketch_jan22a.ino.elf"
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z5setupv+0x10): undefined reference to `XPT2046_Touchscreen::begin(SPIClass&)'
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z4loopv+0xc): undefined reference to `XPT2046_Touchscreen::touched()'
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z4loopv+0x10): undefined reference to `XPT2046_Touchscreen::getPoint()'
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o: in function `setup()':
C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:15:(.text._Z5setupv+0x2e): undefined reference to `XPT2046_Touchscreen::begin(SPIClass&)'
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o: in function `loop()':
C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:22:(.text._Z4loopv+0x8): undefined reference to `XPT2046_Touchscreen::touched()'
C:/Users/reitz/AppData/Local/Arduino15/packages/esp32/tools/esp-x32/2511/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:23:(.text._Z4loopv+0x13): undefined reference to `XPT2046_Touchscreen::getPoint()'
collect2.exe: error: ld returned 1 exit status
Bibliothek XPT2046_Touchscreen im Ordner: C:\Users\reitz\Documents\Arduino\libraries\XPT2046_Touchscreen (veraltet) wird verwendet
Bibliothek SPI in Version 3.3.5 im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI  wird verwendet
exit status 1

Compilation error: exit status 1

Findet jemand den Fehler?

Ich habe ietzt nicht alles hier gelesen, auch nicht die verlinkten Beiträge, aber ich vermute, dass das Projekt schon etwas älter ist und dadurch nicht mehr kompatibel zu den neueren Libraries und der IDE.
Da solltest du mal den Autor des Projektes befragen, mit welchen Versionen sein Projekt funktioniert.

Bitte den Auto fragen.

Erst mall das ESP Core 3.3.5 in der Arduino IDE auf 2.0.17 ändern. Die XPT2046_Touchscreen kann so bleiben ist ja schon 5J Alt, und kommt mit dem SPI 3.3.5 nicht zu recht.
Das mit der Wetterstation bei AZ habe nicht gefunden oder falsch gesucht, jedoch wie oben gezeigt die Color-Weather-Station-ESP32 kompiliert auch,
zeige mall link zu AZ Wetterstation, kann morgen mal testen, jedoch wie geschrieben habe keinen API Key für OW mehr. Nutze nur
🌦️ Docs | Open-Meteo.com
ist genauer und nutzt DWD Prognosen so wie aktuelle Werte dazu kosten los, mehrere Daten abrufbar usw.

@seniorfrickler bisschen Lesestoff

Auf dem Beispiel habe meine Wetterstation aufgebaut.

Hallo,
der Downgrade auf 2.0.17 zeigt keine Veränderung im Ergebnis:

FQBN: esp32:esp32:esp32
Verwende das Board 'esp32' von der Plattform im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.17
Verwendung des Kerns 'esp32' von Platform im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.17
.
.
.
Alles zusammenlinken...
"C:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-g++" "-Wl,--Map=C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/sketch_jan22a.ino.map" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.17/tools/sdk/esp32/lib" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.17/tools/sdk/esp32/ld" "-LC:\\Users\\reitz\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.17/tools/sdk/esp32/qio_qspi" -T esp32.rom.redefined.ld -T memory.ld -T sections.ld -T esp32.rom.ld -T esp32.rom.api.ld -T esp32.rom.libgcc.ld -T esp32.rom.newlib-data.ld -T esp32.rom.syscalls.ld -T esp32.peripherals.ld -mlongcalls -Wno-frame-address -Wl,--cref -Wl,--gc-sections -fno-rtti -fno-lto -Wl,--wrap=esp_log_write -Wl,--wrap=esp_log_writev -Wl,--wrap=log_printf -u ld_include_hli_vectors_bt -u _Z5setupv -u _Z4loopv -u esp_app_desc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_var_impl -u pthread_include_pthread_local_storage_impl -u pthread_include_pthread_rwlock_impl -u include_esp_phy_override -u ld_include_highint_hdl -u start_app -u start_app_other_cores -u __ubsan_include -Wl,--wrap=longjmp -u __assert_func -u vfs_include_syscalls_impl -Wl,--undefined=uxTopUsedPriority -u app_main -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -u newlib_include_assert_impl -u __cxa_guard_dummy -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -Wl,--start-group "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\sketch\\sketch_jan22a.ino.cpp.o" "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\reitz\\AppData\\Local\\arduino\\cores\\3f7e10efe57f48ccd0cdb696cb34638b\\core.a" -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lasio -lbt -lcbor -lunity -lcmock -lcoap -lnghttp -lesp-tls -lesp_adc_cal -lesp_hid -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lesp_https_server -lesp_lcd -lprotobuf-c -lprotocomm -lmdns -lesp_local_ctrl -lsdmmc -lesp_serial_slave_link -lesp_websocket_client -lexpat -lwear_levelling -lfatfs -lfreemodbus -ljsmn -ljson -llibsodium -lmqtt -lopenssl -lperfmon -lspiffs -lulp -lwifi_provisioning -lrmaker_common -lesp_diagnostics -lrtc_store -lesp_insights -ljson_parser -ljson_generator -lesp_schedule -lespressif__esp_secure_cert_mgr -lesp_rainmaker -lgpio_button -lqrcode -lws2812_led -lesp32-camera -lesp_littlefs -lespressif__esp-dsp -lfb_gfx -lasio -lcmock -lunity -lcoap -lesp_lcd -lesp_websocket_client -lexpat -lfreemodbus -ljsmn -llibsodium -lperfmon -lesp_adc_cal -lesp_hid -lfatfs -lwear_levelling -lopenssl -lspiffs -lesp_insights -lcbor -lesp_diagnostics -lrtc_store -lesp_rainmaker -lesp_local_ctrl -lesp_https_server -lwifi_provisioning -lprotocomm -lbt -lbtdm_app -lprotobuf-c -lmdns -ljson -ljson_parser -ljson_generator -lesp_schedule -lespressif__esp_secure_cert_mgr -lqrcode -lrmaker_common -lmqtt -lcat_face_detect -lhuman_face_detect -lcolor_detect -lmfn -ldl -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls_2 -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lphy -lrtc -lesp_phy -lphy -lrtc -lesp_phy -lphy -lrtc -lxt_hal -lc -lm -lnewlib -lstdc++ -lpthread -lgcc -lcxx -Wl,--end-group -Wl,-EL -o "C:\\Users\\reitz\\AppData\\Local\\arduino\\sketches\\A9C15626A38FB5F6CA0B173CDE4C9DC6/sketch_jan22a.ino.elf"
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z5setupv+0x18): undefined reference to `XPT2046_Touchscreen::begin(SPIClass&)'
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z4loopv+0xc): undefined reference to `XPT2046_Touchscreen::touched()'
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o:(.literal._Z4loopv+0x10): undefined reference to `XPT2046_Touchscreen::getPoint()'
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o: in function `setup()':
C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:15: undefined reference to `XPT2046_Touchscreen::begin(SPIClass&)'
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\arduino\sketches\A9C15626A38FB5F6CA0B173CDE4C9DC6\sketch\sketch_jan22a.ino.cpp.o: in function `loop()':
C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:22: undefined reference to `XPT2046_Touchscreen::touched()'
c:/users/reitz/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\reitz\AppData\Local\Temp\.arduinoIDE-unsaved2026022-15732-3qq1fn.kf40y\sketch_jan22a/sketch_jan22a.ino:23: undefined reference to `XPT2046_Touchscreen::getPoint()'
collect2.exe: error: ld returned 1 exit status
Bibliothek XPT2046_Touchscreen im Ordner: C:\Users\reitz\Documents\Arduino\libraries\XPT2046_Touchscreen (veraltet) wird verwendet
Bibliothek SPI in Version 2.0.0 im Ordner: C:\Users\reitz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.17\libraries\SPI  wird verwendet
exit status 1

Compilation error: exit status 1

Das komplette LOG war zu lang, deshalb nur der Teil des Linkers.
Gruß Uli

Das ist nicht normal, zeige dein ganzen Sketch, kann auch als Zip sein wegen den allen Tabs.

Der Linker findet die XPT2046_touchscreen.getPoint() nicht. Die ist in der XPT2046_Touchscreen.cpp enthalten. Hast Du die nicht mit installiert?

Gruß Tommy

Der Hinweis war Gold wert. Weil in der Doku zu dem Board Folgendes steht:

"XPT2046_Touchscreen by Paul Stoffregen:
https://github.com/PaulStoffregen/XPT2046_Touchscreen/blob/master/XPT20 46_Touchscreen.h"

... bin ich dem Link gefolgt und habe ich nur die Header-Datei kopiert und bereitgestellt - und nicht die .cpp !?. Sorry für meine Dummheit.
Die daraus resultierende Fehlermeldung habe ich nur auf die Headerdatei bezogen und nicht als Hinweis auf die fehlende .cpp.

Danke!
Uli

Wenn der Compiler durchläuft, aber der Linker nichts findet, fehlt in 99% der Fälle die cpp.

Gruß Tommy

Kaum macht man's richtig, funktioniert's:

Du könntest den Beitrag #15 noch als Lösung markieren. Das erleichtert anderen Nutzern die Suche.

Gruß Tommy