Forum: Mikrocontroller und Digitale Elektronik undefined reference zum2.


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.
von Reinhard O. (Firma: privat) (flug52)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
ja, liegen im gleichen Ordner.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


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

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]
  • [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.