mikrocontroller.net

Forum: Compiler & IDEs Eclipse findet Funktionen nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: rowtag (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo,

Ich arbeite mit der System Workbench for STM32 (basierend auf Eclipse).
Ich habe in einem neuen Projekt eine neue Funktion implementiert und 
getestet. Danach habe ich alles wichtige aus dem neuen Projekt in mein 
Hauptprojekt geladen um es dort zu verwenden.
Beim builden kommt aber jetzt die Fehlermeldung "undefined reference to 
...".
Wenn ich die betreffenden Funktionen anklicke und auf "Open Declaration" 
klicke öffnet sich die richtige Datei an der richtige Stelle.

Autor: Dr. Sommer (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Und wirklich keines der 16 Millionen Google-Ergebnisse zu diesem Problem 
hat dir geholfen? Auch nicht die unzähligen Beiträge im hiesigen Forum? 
Man muss nicht bei jedem einzelnen Auftreten eines extrem häufigen 
Standard-Problems im Forum nachfragen, und darf durchaus selbst 
recherchieren.

Autor: Frank _. (fbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rowtag schrieb:
> Wenn ich die betreffenden Funktionen anklicke und auf "Open Declaration"
> klicke öffnet sich die richtige Datei an der richtige Stelle.

Da fehlt auch nicht die Deklaration (wäre eine andere Fehlermeldung), 
sondern die kompilierte Definition. Die Fehlermeldung kommt vom Linker.

Autor: rowtag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirklich weitergeholfen hat mir Google wirklich nicht...

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schwer zu glauben. So ziemlich jeder C Programmierer stolpert da einmal 
pro Woche drüber. Das Thema wurde schon Tausend Mal tot diskutiert. Da 
müsste sich irgendwo ein Hinweis finden lassen.

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rowtag schrieb:
> Danach habe ich alles wichtige aus dem neuen Projekt in mein
> Hauptprojekt geladen um es dort zu verwenden.

Dann solltest du auch mal alles nach deiner Ansicht unwichtige in dein 
Hauptprojekt laden. Denn irgend etwas scheint ja zu fehlen.

Oliver

Autor: rowtag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle Lösungsvorschläge die ich bis jetzt probiert habe, blieben 
erfolglos.

Ich hatte das Problem ja auch schon öfters, aber da hat es dann auch 
geklappt mit den Tipps aus dem Internet.

Autor: rowtag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Dann solltest du auch mal alles nach deiner Ansicht unwichtige in dein
> Hauptprojekt laden. Denn irgend etwas scheint ja zu fehlen.

Das Hauptprojekt enthält alle C und H Dateien aus dem Neuen Projekt. Ich 
musste nur Code aus der main.c kopieren

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fand doch mal damit an herauszufinden, was "undefined reference to" 
bedeutet und unter was für Umständen es auftritt. Dann kannst du 
rückwärts schlussfolgern was bei dir die Ursache ist. Einfach 
irgendwelche "Lösungen" auszuprobieren klappt selten.

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eclipse unterscheidet Source-Dateien von anderen, und Source-Ordner von 
anderen.

Ein klassischer Fehler, den man mit Eclipse machen kann, ist, 
Source-Dateien nicht als solche anzulegen bzw. die in 
Nicht-Source-Ordnern zu haben. Dann kompiliert Eclipse die nicht mit.

Oliver

Autor: rowtag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"undefined reference to"  heißt das das Programm nicht weiß wo die 
Funktion steht, richtig?
wie sag ich ihm den wo es steht?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rowtag schrieb:
> "undefined reference to"  heißt das das Programm nicht weiß wo die
> Funktion steht, richtig?

Nein. Es besagt, dass in keiner der gelinkten .o Dateien und 
Bibliotheken die fragliche Funktion oder Variable definiert ist. Da die 
.o Dateien aus deinen .c Dateien kommen, bedeutet dass dass in keiner 
der .c Dateien die Funktion definiert ist. Es fehlt also die Definition 
ganz, oder die fragliche .c Datei wird nicht kompiliert, oder die daraus 
entstehende .o Datei wird nicht mit gelinkt.

Autor: rowtag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Jetzt hab ich's verstanden und den Fehler gefunden.
danke.

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.