Guten Morgen zusammen,
ich habe leider ein kleines Problem. Momentan arbeite ich mit Atmel
Studio 7 und dem Atmel-ICE Basic damit ich meinen Arduino Due debuggen
kann. Da ich aber vorher mit Visual Studio gearbeitet habe, musste ich
erst mein vorhandenes Projekt im Atmel Studio lauffähig bekommen.
Das meiste habe ich glaub ich bereinigt, allerdings bekomme ich jetzt
immer die folgende Fehlermeldung:
1
error: conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)'
Diese Funktion gibt es in der stdlib und in der itoa.h für Arduino...
Könnte mir vielleicht jemand sagen, wie ist das beheben kann? Hab leider
vorher nocht nichts mit dem Atmel Studio gemacht, deshalb kenne ich mich
mit der Umgebung noch nicht so aus...
Gruß Kilian
offensichtlich hast Du verschiedene Declarationen von utoa. Das erste
Argument sollte m.E. 'unsigned int' sein.
Ist das die komplette Fehlermeldung?
Gibt es evt. noch Hinweise auf andere Codezeilen?
Kannst Du die beiden von Dir gefundenen Deklarationen hier auch posten?
c:\program files (x86)\arduino\hardware\arduino\sam\cores\arduino\itoa.h(34,65): error: conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)'
2
extern char* utoa( unsigned long value, char *string, int radix ) ;
Nutze nur die Header, dessen Lib Du auch einbindest.
Wenn Du 2 Libs mit 2 unterschiedlichen Funktionen gleichen Namens
verwenden willst, hast Du ein Problem.
Achim S. schrieb:> Nutze nur die Header, dessen Lib Du auch einbindest.>> Wenn Du 2 Libs mit 2 unterschiedlichen Funktionen gleichen Namens> verwenden willst, hast Du ein Problem.
Ich habe immer nur die "stdlib.h" eingebunden und nie die "itoa.h". Ich
habe auch mal die includes von stdlib auskommentiert, hat aber auch
nicht geholfen.
Kann es vielleicht daran liegen, dass ich den Ordner von "itoa.h"
mitlinke? Allerdings benötige ich den Ordner für die "Arduino.h" etc.
Kilian K. schrieb:> c:\program files> (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\inc
lude\stdlib.h(201,8):
> info: previous declaration 'char* utoa(unsigned int, char*, int)'> char * _EXFUN(utoa,(unsigned, char *, int));>> Und danach kommt die Fehlermeldung in der itoa.h:c:\program files> (x86)\arduino\hardware\arduino\sam\cores\arduino\itoa.h(34,65): error:> conflicting declaration of C function 'char* utoa(long unsigned int,> char*, int)'> extern char* utoa( unsigned long value, char *string, int radix ) ;
Im INCLUDE-Pfad auf dem Rechner werden die Include-Dateien zweier
Entwicklungssysteme gemischt, einerseits Atmel Studio 7, andererseits
Ardiuno.
Rufus Τ. F. schrieb:> Im INCLUDE-Pfad auf dem Rechner werden die Include-Dateien zweier> Entwicklungssysteme gemischt, einerseits Atmel Studio 7, andererseits> Ardiuno.
Das Atmle Studio kann nichts dafür. Der Konflikt kommt daher, dass itoa
und seine Brüder sowohl in der Arduino-Bibliothek als auch neuerdings
(seit ca. 2 Jahren) in der Newlib, die ebenfalls von Arduino verwendet
wird, definiert sind.
Das alleine wäre aber noch kein Problem, wenn die Signaturen dieser
Funktionen in beiden Bibliotheken übereinstimmen würden. Dann würde eben
jeweils diejenige Funktion gelinkt, die der Linker als erste in einer
der beiden Bibliotheken findet.
Da aber in der Arduino-Bibliothek irrtümlicherweise das erste Argument
von utoa als unsigned long statt unsigned int deklariert wurde, kommt es
hier zum Konflikt. Dieser Fehler ist aber wohl mittlerweile behoben.
Anstatt die Signatur in der Arduino-Bibliothek zu korrigieren, hätten
die Arduino-Entwickler diese Funktionen IMHO auch gleich komplett
entfernen können, da sie ja nun in der Newlib enthalten sind.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang