Forum: Compiler & IDEs Arduino Fehlermeldung doppelte Lib


von Philippe B. (philippe27)



Lesenswert?

Hallo

Durch einen neuen Computer bemerkte ich ein Fehler in meiner Arduino 
Programmierung.

Und zwar nutze ich für ein GLCD die UTFT Libary, welche ich in meinem 
Sketch mit #include einbinde.
Soweit so gut.
UTFT Libary: http://www.rinkydinkelectronics.com/library.php?id=51

Beim neuen Computer motzt Arduino mit folgender Meldung: (Auszug der 
Error Meldung)
1
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\DefaultFonts.c.o (symbol from plugin): In function `SevenSegNumFont':
2
3
(.text+0x0): multiple definition of `BigFont'
4
5
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\BigFont.c.o (symbol from plugin):(.text+0x0): first defined here
6
7
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
8
9
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\SevenSegNumFont.c.o (symbol from plugin): In function `SevenSegNumFont':
10
11
(.text+0x0): multiple definition of `SevenSegNumFont'
12
13
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\DefaultFonts.c.o (symbol from plugin):(.text+0x0): first defined here
14
15
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\SmallFont.c.o (symbol from plugin): In function `SmallFont':
16
17
(.text+0x0): multiple definition of `SmallFont'
18
19
C:\Users\p-bra\AppData\Local\Temp\arduino_build_586288\libraries\UTFT\DefaultFonts.c.o (symbol from plugin):(.text+0x0): first defined here
20
21
collect2.exe: error: ld returned 1 exit status

Ich finde nur nicht die Ursache für die angeblichen mehrfachen 
Definitionen der einzelnen Funktionen.

Kann mir jemand sagen weshalb es im \temp Ordner Duplikate anlegt?
Mein Code inkl. aller verwendeten Lib's habe ich als .zip angehängt.

Danke und Gruss
Philippe

von S. R. (svenska)


Lesenswert?

Hast du die Arrays möglicherweise in einer Headerdatei angelegt und 
diese Datei mehrfach eingebunden?

von Philippe B. (philippe27)


Lesenswert?

S. R. schrieb:
> Hast du die Arrays möglicherweise in einer Headerdatei angelegt und
> diese Datei mehrfach eingebunden?

Nein, nicht das ich wüsste.

Ich selbst habe nur den Arduino Sktech mit 4 c-Bilddateien geschrieben.
Alles weitere wird via Libary eingebunden.


Wenn ich die UTFT.h in meinem Sketch auskommentiere, erhalte ich zwar 
die Fehlermeldungen nicht mehr.
Dafür aber die Fehlermeldung das die nachfolgenden GLCD Befehle 
unbekannt sind, was ja auch logisch ist da es in dieser Libary vorhanden 
ist.


Mich wundert es nur das bei meinem alten Computer nie solch eine Meldung 
kam und ich dort den gesamten Sketch wie in der .zip Datei fehlerfrei 
kompilieren konnte.
Zwischenzeitlich habe ich auch einmal Arduino 1.8.6 heruntergeladen, 
welche auf meinem alten Computer lief, aber keine Änderung.

Ich würde mich über jeden Hinweis freuen.

von S. R. (svenska)


Lesenswert?

Aus irgendeinem Grund werden die Arrays mehrfach angelegt. Das kann - 
wie gesagt - eine mehrmals eingebundene Headerdatei sein, oder aber die 
entsprechende C-Datei wird vom Linker mehrfach gelinkt.

Schau dir mal die genaue Compiler-Befehlszeile an. Wenn es keine 
fehlerhaften Includes sind, dann tippe ich darauf, dass eine Datei 
mehrfach gelistet ist.

von Thomas B. (ewi)


Lesenswert?

Im UTFT Verzeichnis befindet sich die Datei DefaultFonts.c. In dieser 
Datei werden der BigFont, der SmallFont und ein SevenSegNumFont 
definiert. Im selben Verzeichnis sind aber auch die Dateien BigFont.c, 
SmallFont.c und SevenSegNumFont.c enthalten, die diese Fonts 
namensgleich definieren. Die Fehlermeldung mit den doppelten 
Definitionen ist also völlig korrekt. Damit das klappt, muss entweder 
die Datei DefaultFonts.c aus dem UTFT Verzeichnis entfernt werden oder 
die Dateien BigFont.c, SmallFont.c und SevenSegNumFont.c müssen entfernt 
werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.