Forum: Mikrocontroller und Digitale Elektronik #include datei.h


von .h (Gast)


Lesenswert?

ich habe folgenden Beitrag gelesen, es hilft mir aber nicht weiter:

https://www.mikrocontroller.net/articles/Include-Files_(C)

ich habe aus einer Library zwei header-Dateien kopiert, wobei die Header 
Datei 1 auf Header Datei 2 zugreift. Header Datei 1 wurde mit
1
#include "Datei1.h"
in main.c eingefügt.

In Datei1 wird über
1
#include <datei2>
 aufgerufen.

Die Fehlermeldung lautet:

cannot open source file "Datei2"

von Mario M. (thelonging)


Lesenswert?

Genau. Und wie heißt die Datei mit vollem Namen?

von Dirk B. (dirkb2)


Lesenswert?

Bei <> wird nur im Include-Path vom Compiler gesucht.

Du kannst die Header in das Include-Verzeichnis vom Compiler kopieren,
den Include-Path ändern (geht auch über Kommandozeile) oder in Datei2 
die <> in "" ändern. Dann wird auch im aktuellen Verzeichnis gesucht.

von .h (Gast)


Lesenswert?

Dirk B. schrieb:
> die <> in "" ändern. Dann wird auch im aktuellen Verzeichnis gesucht.

den gedankengng hatte ich auch. ändert aber nichts

von .h (Gast)


Lesenswert?

Dirk B. schrieb:
> Du kannst die Header in das Include-Verzeichnis vom Compiler kopieren,

damit meinst du, dass ich #include <datei2> in main. c schreibe? Habs 
auch mit "" versucht, das geht auch nicht

von A. S. (Gast)


Lesenswert?

.h schrieb:
> den gedankengng hatte ich auch. ändert aber nichts

Hast Du denn auch alle Antworten gelesen?

Mario M. schrieb:
> Genau. Und wie heißt die Datei mit vollem Namen?

Wenn Du ein Beispiel postest, dass nicht funktionieren kann. Und jemand 
Dich darauf aufmerksam macht. Dann solltest Du entweder darauf eingehen, 
oder (falls es nur ein Schreibfehler hier war) das originale 
Codefragment copypasten.

von Dirk B. (dirkb2)


Lesenswert?

.h schrieb:
> damit meinst du, dass ich #include <datei2> in main. c schreibe?

Das ist nicht nötig. Bei "" wird zuerst im aktuellen Verzeichnis gesucht 
und danach erst im Include-Path

Du solltest die Headerdateien dahin kopieren, wo auch string.h usw. vom 
Compiler liegen.

von Einer K. (Gast)


Lesenswert?

.h schrieb:
> #include <datei2>

.h schrieb:
> cannot open source file "Datei2"

Meldung passt nicht zum Code!

datei2 ist nicht das gleiche wie Datei2
Zumindest nicht überall und immer.

Und?
Fehlt das nicht sowieso ein .h ?

von .h (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Meldung passt nicht zum Code!
>
> datei2 ist nicht das gleiche wie Datei2
> Zumindest nicht überall und immer.
>
> Und?
> Fehlt das nicht sowieso ein .h ?

tut mir leid, habe nicht im BEITRAG sauber gearbeitet. im Code passen 
die Sachen überein, auch .h ist vorhanden

von .h (Gast)


Lesenswert?

Dirk B. schrieb:
> Du solltest die Headerdateien dahin kopieren, wo auch string.h usw. vom
> Compiler liegen.

das habe ich gemacht

von HildeK (Gast)


Lesenswert?

.h schrieb:
> Dirk B. schrieb:
>> Du solltest die Headerdateien dahin kopieren, wo auch string.h usw. vom
>> Compiler liegen.
>
> das habe ich gemacht

Aber genau da gehören eigene Headerdateien nicht hin! Sie gehören ins 
Projektverzeichnis.
Und dann steht im C-Code nur drin: #include "datei.h".
Wenn du gerne sortierst und im Projektverzeichnis ein Directory 'xyz' 
für Headerdateien hast, dann halt #include "xyz/datei.h"

von .h (Gast)


Lesenswert?

"C:\Program Files (x86)\IAR Systems\Embedded Workbench 
8.0\430\inc\dlib\c\"

dort wurde gescuht und nicht gefunden. ich habe es einfach händisch 
dorthin kopiert

von .h (Gast)


Lesenswert?

und es funktioniert nicht =)

von A. S. (Gast)


Lesenswert?

.h schrieb:
> und es funktioniert nicht =)

Dann tu dir doch bitte den Gefallen und poste die Codeschnipsel und die 
Fehlermeldung. Aber wirklich Copy Paste. Es hat wenig Sinn, hier über 
Code und Meldungen zu reden, die falsch abgeschrieben sind.

von Peter (Gast)


Lesenswert?

hi Leute,

stoße grade neu dazu. Ich habe ein ähnliches Problem, deswegen wollte 
ich kein neuen thread aufmachen.

Ich habe aus einer library zwei Header-dateien ohne die dazugehörigen 
C-Dateien. das dürfte eign kein Problem darstellen, denn hier wurden die 
Funktionen direkt definiert und nicht bloß deklariert. Ich hatte mir die 
Lib als ZIP runtergeladen,entpackt und mit include #".." wollte ich auf 
die datei zugreifen. Funktioniert nicht. Wie binde ich die ein? (Mit 
source datei wäre das klar gewesen)

von Dirk B. (dirkb2)


Lesenswert?

Bibliotheken werden mit dem Linker und den Object-Dateien des Compilers 
zu einer Executable gebunden.

Wie, hängt vom System (Compiler, IDE, Betriebssystem) ab.

von A. S. (Gast)


Lesenswert?

Peter schrieb:
> Wie binde ich die ein? (Mit source datei wäre das klar gewesen)

Falls der Compiler sie nicht findet: in den settings oder im makefile 
das Verzeichnis der .h mit angeben (suche dort, wie das mit den 
bisherigen includeordnern gemacht wird). Oder die .h in einen bisherigen 
includeordner kopieren.

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.