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
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?
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.
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
Oliver S. schrieb: > Oder die .c-Dateien nach .cpp umbenennen. Was nicht funktionieren muss; nicht alles, was legales C ist, akzeptiert ein C++-Compiler.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.