huhu Habe in mein Projekt eine hd44780.c und eine hd44780.h Datei geschoben. Um sie im Main anzubinden habe ich #include "hd44780.h" benutzt. Was zu Fehlermeldungen geführt hat, nehme ich jetzt #include "hd44780.c" hinzu funktioniert alles. Normal muß ich doch nur #include "hd44780.h" einfügen oder? Gruß Hawk
:
Verschoben durch User
Lad einmal den Code hoch. Hast du die includes mit "" oder <> umklammert? Bei "" wird im eigenen Verzeichnks gesucht und bei <> in einem Stammverzeichnis für libs. Sind die Funktionen im .h file mit "extern" gelabelt?
Hawk schrieb: > Fehler undefined reference to 'lcd_init()' du hast vergessen die .c Datei dem Projekt hinzufügen. Damit sieht sie der linker nicht. jungspund schrieb: > Lad einmal den Code hoch. > Hast du die includes mit "" oder <> umklammert? das ist eine Meldung vom Linker, das hat nicht mit dem include zu tun.
Die *.c ist im selben Ordner wie die *.h. Muß ich dem Linker irgendwie mitteilen das die dar ist? Habe beide Dateien per drag and drop in den die Projektmappe gezogen.
Hawk schrieb: > Habe beide Dateien per drag and drop in den die Projektmappe gezogen. auch in die richtige Kategorie? Zeig mal ein screenshot vom Projekt.
Funktioniert das C-Modul im C++-Kontext? D.h. sind globale Deklarationen brav mit extern "C" versorgt?
Hawk schrieb: > bitte schön ich kenne das aktuelle Studio nicht, aber das C und H in einer Liste stehen finde ich merkwürdig. bei mir gibt es Sourcefile und Headerfiles dort sie sie dann einsortiert. Auch der Misch zwischen C++ und C könnte Probleme machen.
ib schrieb: > so #include <hd44780.h> nein, weil es keine externe lib ist sondern eine eigenen Header Datei. Aber das hat nichts mit der Fehlermeldung vom linker zu tun.
Was steht denn in der hd44780.h drin und was in hd44780.c? Ist da lcd_init() überhaupt definiert/deklariert? Und schau Dir mal das Makefile an. Und noch etwas: F_CPU gehört ins Makefile, nie in eine .c oder .h Datei.
:
Bearbeitet durch User
Johann L. schrieb: > Funktioniert das C-Modul im C++-Kontext? D.h. sind globale > Deklarationen > brav mit extern "C" versorgt? Sobald ich #include "hd44780.c" mit hinzunehme funktioniert das Display einwandfrei. Globale Variablen oder Konstanten sind mir jetzt nicht aufgefallen. Peter II schrieb: > Hawk schrieb: >> bitte schön > > ich kenne das aktuelle Studio nicht, aber das C und H in einer Liste > stehen finde ich merkwürdig. > > bei mir gibt es Sourcefile und Headerfiles dort sie sie dann > einsortiert. > > Auch der Misch zwischen C++ und C könnte Probleme machen. Wenn ich neue Sourcefile und Headerfiles erstelle, stehen die aus so wie jetzt in der Liste. Das mischen macht keine Probleme in der Richtung.
Häng mal das Linker Kommando an, welches ausgeführt wird. Grüsse, René
Hawk schrieb: > Wenn ich neue Sourcefile und Headerfiles erstelle, stehen die aus so wie > jetzt in der Liste. Das mischen macht keine Probleme in der Richtung. aber irgendwie muss das Studio wissen, welche Dateien er Compilieren und dem linker übergeben muss. Und bei dir übergibt er die hd44780.c nicht dem linker. (genauer die hd44780.o)
die Linker Einstellungen gibt es beim Studio einen Seite unter Eigenschaften des Projekts. hab euch die mal angehängt. Da habe ich halt noch nie was ändern müssen.
Ich habs es mus heisen
1 | extern "C" { |
2 | #include "hd44780.h" |
3 | }
|
Danke euch :D
>Ich habs es mus heisen > >extern "C" { main.cpp in main.c umbennen hätte es wohl auch getan. Da ist ja kein bisschen C++ drin.
holger schrieb: >>Ich habs es mus heisen >> >>extern "C" { > > main.cpp in main.c umbennen hätte es wohl auch getan. > Da ist ja kein bisschen C++ drin. In dem Fall wohl ja ist aber auch noch lange nicht fertig, wollte erst mal das Display zum laufen bekommen.
Peter II schrieb: > ich kenne das aktuelle Studio nicht, aber das C und H in einer Liste > stehen finde ich merkwürdig. Das stört ich auch grade. Kriege ich das irgendwo umgeschaltet..? Ich sehe es nicht.
Hawk schrieb: > Johann L. schrieb: >> Funktioniert das C-Modul im C++-Kontext? D.h. sind globale >> Deklarationen brav mit extern "C" versorgt? > > Sobald ich #include "hd44780.c" mit hinzunehme funktioniert das Display > einwandfrei. U.U. haben entsprechenden Identifier dann aber eine andere Linkage. Außerdem wird der Code dann als C++-Code übersetzt, da er in einem C++-Modul includet ist.
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.