Forum: Compiler & IDEs Eclipse findet Funktionen nicht


von rowtag (Gast)


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.

von Dr. Sommer (Gast)


Angehängte Dateien:

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.

von Frank _. (fbi)


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.

von rowtag (Gast)


Lesenswert?

Wirklich weitergeholfen hat mir Google wirklich nicht...

von Dr. Sommer (Gast)


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.

von Oliver S. (oliverso)


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

von rowtag (Gast)


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.

von rowtag (Gast)


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

von Dr. Sommer (Gast)


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.

von Oliver S. (oliverso)


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

von rowtag (Gast)


Lesenswert?

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

von Dr. Sommer (Gast)


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.

von rowtag (Gast)


Lesenswert?

Ok. Jetzt hab ich's verstanden und den Fehler gefunden.
danke.

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.