Forum: Compiler & IDEs Probleme mit strtod() bzw. atof()


von Bernd (Gast)


Lesenswert?

Hallo,
hat irgendjemand Erfahrung mit der Funktion "strtod()" ?
wenn ich die Funktion in mein Programm einbaue erhalte ich eine 
Linkerfehler, daß irgendetwas doppel definiert ist.
Die Funktion atof() kommt zum gleichen Ergebnis.

Gruß
Bernd

von (prx) A. K. (prx)


Lesenswert?

Den Compiler und dessen Version dürfen wir erraten?

von Karl H. (kbuchegg)


Lesenswert?

Bernd wrote:
> Hallo,
> hat irgendjemand Erfahrung mit der Funktion "strtod()" ?
> wenn ich die Funktion in mein Programm einbaue erhalte ich eine
> Linkerfehler, daß irgendetwas doppel definiert ist.
> Die Funktion atof() kommt zum gleichen Ergebnis.

Ist doch ganz einfach. Nimm eine Definition von irgendwas raus und es 
sollte gehen.

Anruf in der Werkstatt: Mein Auto benimmt sich so seltsam! Was könnte 
das sein?

von Bernd (Gast)


Lesenswert?

Tschuldigung
AVR Studio 4.15 Build 623
AinAVR 20081205

Gruß
Bernd

von brizz (Gast)


Lesenswert?

Ohne nähere Infos siehe hier: 
http://www.google.de/cse?cx=partner-pub-1202612203358489%3Ajaffbdxotov&ie=UTF-8&q=strtod&sa=Suche

Ansonsten wollen dir A. K. und karl heinz Buchegger sagen, dass ohne
ausführliche Frage keine sinnvolle Antwort kommen kann. Dinge die in
deiner Fragen vermutlich fehlen sind:
-Komplette (und kopierte Fehlermeldung).
-Der Code selbst (am besten ein Minimalbeispiel und mit Code-Tags).
-Der Compiler, am besten mit Version. Wobei wir hier im *GCC*-Forum wohl
 mit dem GCC rechnen dürfen. ;-)

Grundsätzlich bietet sich bei den meisten (und speziell auch bei dieser)
Frage die Forensuche an, wenn ich mich recht erinnere, gab es auch in
der letzten Zeit mehrere Fragen zu strtod().

von Bernd (Gast)


Lesenswert?

Hallo,
laut SourceForge.net, von wo ich WinAVR geladen habe, heiß es:

> WinAVR (tm) is a suite of executable, open source software development
> tools for the Atmel AVR series of RISC microprocessors hosted on the
> Windows platform. Includes the GNU GCC compiler for C and C++"
Ausserdem ist in der Forumsliste unter GCC auch "WinAVR" aufgelistet.

daher bin ich eigentlich der Meinung hier richtig zu sein.

der Code ist:  char    editPuffer[20];
               double  wert;
               ...
               wert = strtod(editPuffer + 1, NULL);

Als Fehlermeldung erhalte ich:
e:/programme/atmel/avr 
tools/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr51 
\libc.a(cmpsf2.o):  In function `__lesf2':
(.text.fplib+0x0): multiple definition of `__ltsf2'
e:/programme/atmel/avr 
tools/winavr-20081205/bin/../lib/gcc/avr/4.3.2/avr51\libgcc.a(_lt_sf.o): 
(.text+0x0):  first defined here
make: *** [TC_Uhr.elf] Error 1

Die Meldung kommt erst beim linken.

Gruß
Bernd

von (prx) A. K. (prx)


Lesenswert?

Wie steht es um -lm (libm) ?

von Bernd (Gast)


Lesenswert?

Das mit der Linker Option -lm steht auch in der Library Reference von 
Atmel.
Funktioniert aber nicht.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernd wrote:

> Funktioniert aber nicht.

Meine Glaskugel meint, dass du sie nicht ans Ende der Kommandozeile
geschrieben hast.  Damit wird sie effektiv ignoriert (weil zu dem
Zeitpunkt, da sie auf der Kommandozeile steht, der Linker daraus
noch nichts entnehmen kann).

von (prx) A. K. (prx)


Lesenswert?

In die Sprache vom Studio übersetzt: Nicht in die Linker-Optionen das 
-lm reinschreiben, sondern in die Liste der Libs.

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.