Skocz do zawartości

Visual Studio, Arduino - nie można wgrać programu - "error: ld returned 1 exit status"


dzemdobrek

Pomocna odpowiedź

Cześć wszystkim jeszcze raz.
Dopiero zacząłem używać Visual Studio i nie do końca jeszcze się z nim zaznajomiłem. Problemem jest to, że nie mogę wgrać na płytkę programu. W konsoli wyskakuje mi takie coś:
 

> Executing task: C:\Users\pawel\.platformio\penv\Scripts\platformio.exe run --target upload <

Processing uno (platform: atmelavr; board: uno; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash   
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
 - framework-arduino-avr 5.1.0
 - tool-avrdude 1.60300.200527 (6.3.0)
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Linking .pio\build\uno\firmware.elf
.pio\build\uno\src\Untitled-2.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `setup'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\Untitled-2.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `loop'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\main.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `setup'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\main.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `loop'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\traffic light delay.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `setup'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\traffic light delay.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `loop'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\traffic light state machine ver 1.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `setup'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
.pio\build\uno\src\traffic light state machine ver 1.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `loop'
.pio\build\uno\src\Untitled-1.c.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\uno\firmware.elf] Error 1
=================================================================== [FAILED] Took 2.29 seconds ===================================================================Działanie procesu terminalu C:\Users\pawel\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload' zostało zakończone z kodem zakończenia: 1.

Terminal zostanie ponownie użyty przez zadania. Naciśnij dowolny klawisz, aby go zamknąć.

 

Link do komentarza
Share on other sites

@dzemdobrek Twój problem nie dotyczy wgrywania programu tylko występuje już na etapie kompilacji (a dokładnie linkowania). Wygląda to na taką sytuację w której masz plik main.cpp (z funkcjami loop() i setup()) właściwego projektu i masz też drugi plik, ale o innej nazwie, który też zawiera funkcje setup() i loop(). Natomiast wadą i równocześnie zaletą PlatformIO jest to, że kompiluje on wszystkie pliki źródłowe jakie napotka w projekcie - dlatego jeśli masz taką sytuację w której przekopiowałeś pliki jednego projektu do drugiego i zmieniłeś nazwę pliku main.cpp z tego drugiego projektu to będziesz miał błąd linkowania "multiple definition of". Jeśli natknąłeś się na dokładnie taką sytuację to zmień rozszerzenie plików które służą Ci jako odniesienie, lub usuń je z projektu.

Jeśli to nie jest powyższa sytuacja to najszybszym testem jest stworzenie nowego projektu na UNO i tam dokonanie próby kompilacji a następnie wgrania programu. Jeśli na czystym projekcie program się buduje i wgrywa to dodawaj pliki jeden po drugim - wtedy znajdziesz problematyczny plik.

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.