Jak opravit Arduino / PlatformIO undefined reference to `loop()'

Problém:

Při pokusu o kompilaci vašeho Arduino nebo PlatformIO projektu, vidíte chybové hlášení jako

linker_error_ld.txt
/home/uli/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev/libFrameworkArduino.a(main.cpp.o):(.literal._Z8loopTaskPv+0x8): undefined reference to `loop()'

Řešení

Nedeklarovali jste funkci loop() ve vašem zdrojovém kódu. Otevřete main.cpp nebo váš .ino zdrojový kód soubor a začněte s následující (prázdnou) loop() funkcí, která nedělá nic:

empty_loop_example.cpp
void loop() {
    // Nothing to do here since HTTPServer
    // is running in a separate thread
    delay(1000);
}

Po tom, co jste přidali jakoukoliv void loop() { /* ... */} funkci do vašeho zdrojového kódu, zkuste znovu sestavit/nahrát a chybové hlášení by mělo zmizet.

Pokud chcete, můžete také přidat kód jako tisk zprávy na sériový port při každém běhu loop:

loop_with_serial_example.cpp
void loop() {
    // Nothing to do here since HTTPServer
    // is running in a separate thread
    Serial.println("Hello world!");
    delay(1000);
}

Podívejte se na podobné články podle kategorie: Arduino C/C++ PlatformIO