-
        

Ergebnis 1 bis 10 von 10

Thema: undefined reference to `setLEDs'

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2008
    Beiträge
    6

    undefined reference to `setLEDs'

    Anzeige

    Habe heute den RP6 gekauft um die Grundlagen zu lernernen,
    aber beim sogar beim compilieren der beispiele bekomme ich diesen fehler:

    Compiling: RP6Base_LEDs.c
    avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:197: warning: inline function 'isMovementComplete' declared but never defined
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:76: warning: inline function 'setLEDs' declared but never defined
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:197: warning: inline function 'isMovementComplete' declared but never defined
    ../../RP6Lib/RP6base/RP6RobotBaseLib.h:76: warning: inline function 'setLEDs' declared but never defined

    Linking: RP6Base_LEDs.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref -lm
    RP6Base_LEDs.o: In function `main':
    d:\rp6\hex\rp6base_examples\Example_01_LEDs/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
    d:\rp6\hex\rp6base_examples\Example_01_LEDs/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
    d:\rp6\hex\rp6base_examples\Example_01_LEDs/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
    make: *** [RP6Base_LEDs.elf] Error 1


    erst wenn ich alle setLEDs in nen kommentar schreibe funktioniert das compilieren.. woran könnte es liegen? hab ein bisl rumprobiert, leider ohne erfolg.

    mfg Vicinzu

    PS.
    es sind die examples vom RP6Examples_20071016.zip

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    31.03.2004
    Beiträge
    57
    Hallo,
    ein Crack bin ich nicht, aber vielleicht hilfts dir weiter:
    Kann es sein, dass du im "Programmers Notepad unter Tools-> "Make all" den Menuepunkt Tools->"Programm" klickst ?
    Die Warnungen besagen m.E., dass die genannten Funktionen in deinem Programm zwar richtig deklariert (d.h. angemeldet) wurden, die fehlermeldungen sagen, dass aber der eigentliche Inhalt (was in der Funktion geschehen soll) nicht gefunden wurde.
    Es kann auch sein, dass die zeile #include "RP6RobotBaseLib.h" ganz oben in deinem Quelltext nicht ausgeführt wurde (dann müssten aber noch mehr Fehlermeldungen kommen).
    Grüße von Jens

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2008
    Beiträge
    6
    Leider nicht, hab sogar wie in der Anleitung stand die make_all.bat benutzt..
    hab sogar versucht in der RP6RobotBaseLib.h das setLED neuzuderfinieren.. aber dann meinte der igendwie dass es das schon beim RP6RobotBaseLib.c gab..

    Also C / C++ ist für mich neu, hab aber Turbo Pascal, Java & C# erfahrungen.. wollte aber sowieso schon immre C bzw C++ lernen..

    Hab jetzt sogar die Lirbrary von der CD versucht.. selber fehler.. also müsste es wohl doch an mir liegen.. jmd noch ne idee?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Schrobenhausen, München
    Alter
    24
    Beiträge
    583
    Hmm...

    du hast alle Libs von der CD da rein?

    hol dir mal die neuen Libs von AREXX mit den neuen Bsps und dem neuen RP6Loader, --> google, hab grad kein link, sry

    wenn du die Funktion neu definieren willst musst du schon in der RP6RobotBaseLib.c gucken, die Headerdatei (.h) included diese

    wenn du die bereits mitgelieferte .bat datei nimmst und WINDOWS (wichtig) hast, dann sollte eigentlich kein Fehler auftreten

    Ist das nur bei diesem LED-Beispiel oder auch wo anders?

    naja, versuchs dann doch auch mal mit dem Programmers Notepad, wobei das meist die unsicherere Methode ist... (wenn dir das lieber ist, dann nimm gleich WinAVR, freeware und alles drin, du musst allerdings AVR-Gcc schon instailliert haben, dürftest du laut deiner Fehlermeldung oben aber schon haben)


    MfG Pr0gm4n

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2008
    Beiträge
    6
    Ich hab die neusten aus dem Internet udn hab auch die von der CD getestet.. bei beiden der selbe Fehler..

    In jeder Datei wo setLEDs vorkommt, gibt es den Fehler.
    Man kann die Dateien nur Komplieren wenn amn diese entfernt oder kommentarzeichen davor einfügt.. Hab zB das TV-Remote beispiel kompilieren können als ich die setLEDs entfernt habe und es lief (auch auf dem RP6).. aber alles dann auch ohne LEDs..

    mfg
    Vicinzu

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    In RP6RobotBaseLib.c wird u.a. setLEDs() definiert. Also funktioniert irgendwas nicht mit der Einbindung ins Projekt. Ich verwende KAMAVR und muss RP6RobotBaseLib.c von Hand zum Projekt hinzufügen. Alternativ funktioniert bei mir auch ein zusätzliches

    #include "RP6RobotBaseLib.c"

    setLEDs() und isMovementComplete() sind die einzigen inline-Funktionen. Vielleicht stört sich der Compiler an irgendeinem Schalter. Dann könnte man testweise das "inline" bei den Definitionen entfernen. In RP6RobotBaseLib.c die Zeilen 152 und 740 bzw. in RP6RobotBaseLib.h die Zeilen 67 und 188:

    Code:
    inline void setLEDs(uint8_t leds)
    inline uint8_t isMovementComplete(void)
    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2008
    Beiträge
    6
    DANKE! Hat geklappt!
    Hab in der library inline entfernt und nun kompiliert er es ohne Probleme!
    Jetzt kann ich mal mit richtig mit der Programmierung anfangen.. würde aber gerne wissen wieso es nur bei mir kam (trotz neuster software ausm internet)..

    naja,
    dank dir hat man nun eine einfache Lösung des Problems!


    mfg
    Vicinzu

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Prima.

    würde aber gerne wissen wieso es nur bei mir kam
    Das würde mich auch interessieren. Ich tippe auf einen Schalter im makefile der inline verhindert. Vielleicht weiß ein avr-gcc-Kenner woran das liegt.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2008
    Ort
    Stuttgart
    Beiträge
    28
    Ich danke euch für diesen Beitrag! Ich rödel auch schon ein paar Stunden an dem Problem rum!

    Jetzt kanns bei mir auch endlich losgehen...

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Hallo,

    also erstmal ist es wichtig zu wissen welche WinAVR Version Ihr denn überhaupt verwendet.
    Das Problem bei WinAVR ist, dass sich von Version zu Version eine ganze Menge ändern kann
    Man bleibt also besser immer bei einer Version solange man keine neuen Features aus einer späteren Version benötigt.
    "Never change a running system" ist hier wirklich ernst zu nehmen!


    Die RP6Lib und Beispiele sind für WinAVR Version 20070525 entwickelt und getestet worden.
    Auch mit 20071221 klappt es. Es erscheinen nur drei (unwichtige) Warnings wegen inline Funktionen (warum auch immer die Entwickler vom GCC meinten, dass "inline" nicht dem GNU99 Standard entspricht obwohl es schon seit ich mich erinnern kann problemlos funktioniert hat)

    Den Fehler wie Vicinzu ihn gepostet hat, konnte ich allerdings mit keiner der 2007er Versionen reproduzieren!

    Wie auch immer - in der 20080429er Version der RP6 Beispielprogramme wurde das inline entfernt.

    s.
    http://www.arexx.com/rp6

    Zusätzlich ist dort auch das aktuelle Selbsttestprogramm mit Quellcode enthalten (das mit den Encoder Anzeigen...), man muss es also nicht mehr separat herunterladen.

    MfG,
    SlyD

    PS:
    Falls ihr schon die 20080411er Version von WinAVR heruntergeladen hattet - die enthält einen gravierenden Bug und ist daher wieder vom Netz genommen
    worden:
    http://www.mikrocontroller.net/topic/97264
    http://www.avrfreaks.net/index.php?n...=437946#437946

    Also die besser nicht verwenden und bei den alten 2007er Versionen bleiben.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •