Atmel Studio #include Problem

Gast #4904418
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
Gast
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?
Gast
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.
Gast
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.
Gast
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.
Gast
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.
Gast
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)
Gast
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.
Angehängte Dateien:
Gast
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.
Persönliche Seite
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.