Forum: Mikrocontroller und Digitale Elektronik undefined reference zum2.


von Reinhard O. (Firma: privat) (flug52)


Lesenswert?

Hallo,
die bisherigen Antworten auf dieses sicher schon 100 mal angesprochene 
Thema sind alle veraltet.
Ich benutze AtmelStudio7. Im Projektordner liegen lcd.c und lcd.h 
Dateien.
#include "lcd.h" in main gemacht.

Im Solution Manager habe ich die .h und c Dateien mittels "add existing 
file" zugefügt. Die Funktion lcd_display() gibt es im lcd.c

Beim Compilieren erhalte ich die Fehlermeldung(en) undefined reference 
to lcd_display(). Finde den Fehler nicht!
Gruß
Reinhard
PS: die .c und .h Dateien habe ich mittels "Neu/File/C-File" erzeugt und 
Code aus einem Beispiel hier aus dem Forum hineinkopiert. Soll ein 
Versuch der Ansteuerung eines LCD Displays mit i2C werden.

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Habe AS7 lange nicht benutzt, aber befindet sich die lcd.c im Ordner wo 
auch die anderen .c Dateien liegen?
Projekt gespeichert?

von Reinhard O. (Firma: privat) (flug52)


Lesenswert?

ja, liegen im gleichen Ordner.

von Jim M. (turboj)


Lesenswert?

Reinhard O. schrieb:
> ja, liegen im gleichen Ordner.

Das heist aber IMHO noch lang nicht das sie im Projekt mit übersetzt und 
verlinkt wird...

von Reinhard O. (Firma: privat) (flug52)


Lesenswert?

Und was bedeutet das für mich?

hilft mir das weiter (Makefile)
 # All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
dort sollten die Quellcode Dateien stehen.
Am Anfang steht: Automatisch generiert, nicht bearbeiten

: Bearbeitet durch User
von fop (Gast)


Lesenswert?

Reinhard O. schrieb:
> die bisherigen Antworten auf dieses sicher schon 100 mal angesprochene
> Thema sind alle veraltet.
Naja, aber sie sind nicht älter als der C-Sprachstandard. Wenn Du damit 
sagen willst, dass der veraltet ist, kannst Du gerne in einem anderen 
Forum darüber philosophieren - werden bestimmt genügend mit machen...

> #include "lcd.h" in main gemacht.

> file" zugefügt. Die Funktion lcd_display() gibt es im lcd.c

> Beim Compilieren erhalte ich die Fehlermeldung(en) undefined reference
> to lcd_display(). Finde den Fehler nicht!

Gibt es die Deklaration von lcd_display() denn auch in lcd.h ?

Wenn nur die Deklaration fehlt, wirft der Compiler eine Warnung. Fehlt 
gar die ganze Definition bricht der Linker mit einem Fehler ab.

von fop (Gast)


Lesenswert?

PS:
- Taucht Deine lcd.c rechts im Solution Explorer auf ?
- Siehst Du im Output unten wie sie übersetzt wird, wenn Du Rebuild 
Solution anklickst ?
- Sind im kopierten Code Zeilen die mit so lustigen Dingen wie #if oder 
#ifdef anfangen ?
- hast Du ein /* reinkopiert, aber das */ nicht mehr ?

Versuche z.B. mal eine Zeile in der einfach nur
HURZ!
steht mitten in die Funktion einzufügen. Der Compiler wird sich dann 
schon melden, wenn er das übersetzen soll. ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

fop schrieb:
> Wenn nur die Deklaration fehlt, wirft der Compiler eine Warnung. Fehlt
> gar die ganze Definition bricht der Linker mit einem Fehler ab.

Das ist einer der Nachteile des gcc, da ist das nur schwer 
auseinanderzuhalten.

von Reinhard O. (Firma: privat) (flug52)


Lesenswert?

Mein Fehler: habe ein GGC C++ Projekt erstellt an Stelle GGC C!
Jetzt klappt es...

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.