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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.