- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: eclipse- Fehler beim Linken

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2014
    Beiträge
    5

    Ausrufezeichen eclipse- Fehler beim Linken

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich möchte mit eclipse in C den ASi-Master von Bihl + Wiedemann programmieren.
    Das Programm funktioniert auch solange ich meine Routinen in der main.c betreibe.
    Nun möchte ich die Routinen in eine Unterfunktion "Grundstellung.c" auslagern um die Programmübersicht zu vereinfachen und öfters auf diese Routinen zugreifen zu können.
    Habe nun ein neues Source file bzw. Header file erzeugt und meinen Code dorthin übertragen. Ich habe die Funktion als "Grundstellung_anfahren ();" deklariert.
    Beim Linken bekomme ich folgenden Fehler:



    **** Attempting to build... ****

    C:\Program Files\eclipse_control\Compiler\msys\1.0\bin\sh -c export PATH=../../Compiler/msys/1.0/bin:$PATH ;make -sf pbus.mak DEBUG=0 all
    -----------------------
    control -- Release
    -----------------------

    .release/main.o: In function `main':
    C:\Program Files\eclipse_control\Workspace\Profibus/main.c:104: undefined reference to `Grundstellung_anfahren'
    collect2: ld returned 1 exit status
    make: *** [.release/control.elf] Error 1



    Wenn ich das Selbe Programm in eine bereits existierende Unterfunktion einfüge, bei der ich zuvor alles lösche, funktioniert das Programm. Es muss dazugesagt werden, dass es vom Hersteller bereits ein Stück Code gab, welches ein Unterprogramm beinhaltet. In dieses habe ich es eingefügt aber wie gesagt zuvor den Inhalt gelöscht.

    Kann mir jemand den entscheidenden Tip geben? Evtl. ist dieses Problem bereits jemandem geläufig.
    Ich vermute dass es an irgendwelchen Grundeinstellungen liegt. Allerdings sind mir beim Vergleichen der Einstellungen der beiden Unterfunktionen keine Unregelmäßigkeiten aufgefallen.

    Gruß Rena

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Du rufst eine Funktion auf die der Compiler/Linker nicht kennt, daher die Fehlermeldung. Welche Funktion das ist verrät er dir auch.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2014
    Beiträge
    5
    Hallo Markus,
    soweit ist mir das bekannt aber dennoch nicht nachvollziehbar.
    Wer genau liest stellt fest, dass dieser Fehler nur dann auftritt wenn ich die Funktion mit einer neu erstellten Unterfunktion aufrufe.
    Wenn ich dann exakt den selben Code in einer bereits bestehenden Unterfunktion aufrufe (deren Inhalt habe ich vorher gelöscht, es wird dort also nichts zusätzliches deklariert) funktioniert es allerdings.
    Gruß Rena

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Renatraps Beitrag anzeigen
    Wer genau liest stellt fest,
    Ich finde keinen übersetzbaren Code, mit dem man das Problem nachvollziehen kann.
    dass dieser Fehler nur dann auftritt wenn ich die Funktion mit einer neu erstellten Unterfunktion aufrufe.
    Wenn ich dann exakt den selben Code in einer bereits bestehenden Unterfunktion aufrufe (deren Inhalt habe ich vorher gelöscht, es wird dort also nichts zusätzliches deklariert) funktioniert es allerdings.
    Was ist der Unterschied zwischen Funktion und Unterfunktion? In C sind Funktionen grundsätzlich global und werden auch global deklariert.

    MfG Klebwax
    Geändert von Klebwax (11.06.2014 um 10:43 Uhr)
    Strom fließt auch durch krumme Drähte !

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2014
    Beiträge
    5
    Hallo Klebwax,

    es gibt eine Hauptfunktion "main.c", diese soll eine Unterfunktionen "Grundstellung.c" aufrufen.

    Den Code hatte ich in der main.c gesschrieben und alles war prima.
    Dann habe ich die Grundstellung.c erstellt und den Code dort hin kopiert. Dies funktioniert nicht.
    Dann Code in eine bestehende "control_io.c" kopiert und vorher deren ursprünglichen Code entfernt. Dies funktioniert dann.
    Es hat sich also an meiner "Unterfunktion" (diese nenne ich nun mal so) nichts inhaltlich geändert. Sie liegt nur wo anders ab.

    Eventuell jetzt eine Idee?

    Gruß Rena

    Gruß Rena

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Hallo Rena,

    hast du dem Kompiler angegeben, dass die Datei Grundstellung.c einzubinden ist?
    Hier mehr dazu...

    MFG Sisor

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von Renatraps Beitrag anzeigen
    es gibt eine Hauptfunktion "main.c", diese soll eine Unterfunktionen "Grundstellung.c" aufrufen.
    Du wirfst Quelltextdateien mit Funktionen durcheinander. Grundeinstellung.c ist eine andere Datei mit Quelltext, wenn der Compiler die nicht kennt, gilt das auch für deren Inhalt!

    Verwendest du ein Makefile oder kümmert sich Eclipse um den den Build-Vorgang? Weil: Eclipse kümmert sich normalerweise selbst darum, dass alle Quelltextdateien vom Compiler übersetzt werden. Wenn du mit einem Makefile arbeitest, musst du dieses dagegen selbst entsprechend anpassen!

    Davon abgesehen: Du machst die aufgerufenen Funktionen hoffentlich auch in einem Header (Grundstellung.h) bekannt, den du in main.c einbindest?

    mfG
    Markus

    PS: Evtl. solltest du dir einige C-Tutorials ansehen bevor du wild mit verschiedenen Quelltextdateien um dich wirfst. Modularisierung erfordert schon etwas Grundlagenverständnis.
    Tiny ASURO Library: Thread und sf.net Seite

Ähnliche Themen

  1. Eclipse + AVR Plugin Fehlermedlung beim kompilieren
    Von Digital-Ghost im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 01.10.2012, 08:42
  2. [Nibobee]Fehler beim Linken: ".text.line_readPersistent
    Von waschtl im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 1
    Letzter Beitrag: 29.12.2010, 22:43
  3. Eclipse 3.6 für C/C++ problem beim Projekterstellen
    Von godi22 im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 25.07.2010, 14:18
  4. Fehler beim linken "undefined reference to..."
    Von Befedo im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 21.05.2010, 23:20
  5. Problem beim Linken mit WinAVR
    Von im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 25.03.2004, 18:16

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests