Forum: Compiler & IDEs LCD Library benutzen


von Patrick B. (paddybo93)


Angehängte Dateien:

Lesenswert?

Guten Tag,
ich versuche seit längerem die LCD Library von Peter Fleury zu benutzen, 
aber schaffe dies nicht. Ich benutze einen Atmega16 und Codeblocks mit 
dem GCC Compiler für AVR. Ich bekomme immer den Fehler undefined 
reference to...
Header und Source Datei sind zum Projekt hinzugefügt und den Projektpfad 
in das die Search Directories eingetragen.
Hat jemand eine Idee woran es liegen kann? Ich hatte das Display mit 
einem Atmega8515 schon einmal zum laufen bekommen, liegt das an dem 
Atmega16? Ich habe leider das alte Projekt nicht mehr. Ich habe im 
Anhang noch ein Bild von der Projektstruktur und dem Fehler.

Schöne Grüße
Paddy

von löti (Gast)


Lesenswert?

muss das nicht lcd_clear heisen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gibt es einen Grund, warum "main.cpp" als C++-Code geschrieben ist?

Ist in der "lcd.h" die für den Aufruf aus C++-Code nötige 'extern 
"C"'-Verpackung enthalten?

von Patrick B. (paddybo93)


Lesenswert?

löti, nein das ist so richtig. Codeblocks hat mir das auch so 
vorgeschlagen. Hab extra noch einmal nachgesehen. Die anderen LCD 
Funktionen habe ich ersteinmal auskommentiert, aber bei denen gibt es 
auch diesen Fehler.

mhhh stimmt an die cpp datei habe ich noch nicht gedacht. Ich habe sie 
in c++ geschrieben weil mir das besser liegt, ich dachte das c++ auch c 
benutzen kann. Ich erstelle mal eine main in c.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Patrick B. schrieb:
> ich dachte das c++ auch c benutzen kann.

Kann man, man muss nur die Deklarationen der daraus aufgerufenen 
C-Funktionen in 'extern "C"' verpacken.

Also:

blafusel.h
1
#ifdef  __cplusplus
2
extern "C" {
3
#endif
4
5
int meine_funktion(int irgendwas);
6
void nochnefunktion(void);
7
8
#ifdef  __cplusplus
9
}
10
#endif

Das musst Du also in die lcd.h einbauen.

Sollte das schon drinstehen, hast Du allerdings ein anderes Problem.
Falls

von Oliver S. (oliverso)


Lesenswert?

Oder die .c-Dateien nach .cpp umbenennen.

Oliver

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Oliver S. schrieb:
> Oder die .c-Dateien nach .cpp umbenennen.

Was nicht funktionieren muss; nicht alles, was legales C ist, akzeptiert 
ein C++-Compiler.

von Oliver S. (oliverso)


Lesenswert?

Die Fleury-Libs sollten da aber unproblematisch sein.

Olivet

von Patrick B. (paddybo93)


Lesenswert?

Vielen Dank für die schnellen Antworten,

ich habe die lcd.h nun unter extern "C" includiert, jetzt lässt sich das 
Programm übersetzen. Vielen Dank ihr habt mir sehr geholfen :)

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.