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
Habe AS7 lange nicht benutzt, aber befindet sich die lcd.c im Ordner wo auch die anderen .c Dateien liegen? Projekt gespeichert?
Reinhard O. schrieb: > ja, liegen im gleichen Ordner. Das heist aber IMHO noch lang nicht das sie im Projekt mit übersetzt und verlinkt wird...
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
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.
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. ;-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.