Comment corriger Arduino / PlatformIO undefined reference to `loop()`

Problème :

En essayant de compiler votre projet Arduino ou PlatformIO, vous voyez un message d’erreur tel que

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()'

Solution

Vous n’avez pas déclaré de fonction loop() dans votre code source. Ouvrez main.cpp ou votre fichier de code source .ino et commencez avec la fonction loop() (vide) suivante qui ne fait rien :

empty_loop_example.cpp
void loop() {
    // Rien à faire ici puisque HTTPServer
    // tourne dans un thread séparé
    delay(1000);
}

Après avoir ajouté une fonction void loop() { /* ... */} à votre code source, essayez de build/upload à nouveau et le message d’erreur devrait avoir disparu.

Si vous le souhaitez, vous pouvez aussi ajouter du code tel qu’imprimer un message sur le port série à chaque exécution de la boucle :

loop_with_serial_example.cpp
void loop() {
    // Rien à faire ici puisque HTTPServer
    // tourne dans un thread séparé
    Serial.println("Hello world!");
    delay(1000);
}

Consultez les articles similaires par catégorie : Arduino C/C++ PlatformIO