Forum: Mikrocontroller und Digitale Elektronik Include-Fehler im MPLAB X


von Michael S. (rbs_phoenix)


Lesenswert?

Hallo zusammen.
Ich bin dabei via MPLAB X und XC8 ein Programm zu erstellen. Ich habe im 
Hauptordner eine main.c und 2 Ordner: "Header" und "Source". Im Ordner 
"Source" ist eine c-Datei, die eine Header-Datei aus dem Ordner "Header" 
include'n soll. Die Zeile sieht also so aus:

#include <../Header/datei.h>

Wenn ich in MPLAB X die c-Datei öffne und mit gedrückter STRG-Taste auf 
den Pfad klicke, wird sie geöffnet. Die Datei ist also vorhanden und der 
Pfad stimmt.

Wenn ich nun aber den Compiler starte, gibt er mir eine Fehlermeldung 
zurück, in dem er sagt:
1
Source/test.c:56: error: (141) can't open include file "../Header/test.h": No such file or directory

Doch wie kann das sein, wenn die Datei existiert und man selbst in MPLAB 
X mittels dem Pfad auf die Datei zugreifen kann!?

Ich habe auch die Ordner im Projekt übernommen, also "Source Files" 
beinhaltet die main.c und einen Ordner "Source", in dem die test.c ist.

Hat jemand eine Idee woran das liegt?

von Stefan W. (dl6dx)


Lesenswert?

Michael Skropski schrieb:
> #include <../Header/datei.h>

#include <filename> verwendet das allgemeine Include-Verzeichnis 
(Header-Dateien des Compilers).

#include "filename" verwendet das Verzeichnis der gerade übersetzten 
Datei.

Grüße

Stefan

von Michael S. (rbs_phoenix)


Lesenswert?

Aahhhh. Danke, daran lag es.

von Michael S. (rbs_phoenix)


Lesenswert?

So, habe jetzt ein wenig weiter programmiert und bekomme wieder einen 
Fehler:
1
:0: error: undefined symbols:
2
        _writeBuffer(dist/default/production\CDC.X.production.obj) _readBuffer(dist/default/production\CDC.X.production.obj) 
3
(908) exit status = 1

Ich habe ein bisschen gegugelt und einen Forumsbeitrag gelesen, wo der 
Fragende nach dem Symbol suchen sollte. Das habe ich auch getan (via 
Notepad++ jede Datei im Ordner durchsucht). Dort kamen ein paar 
Ergebnisse, allerdings nur in:
cdc_functions.p1, main.p1 und CDC.X.production.sdb (und .lst, .obj, 
.map, .cmf, .sym).

Allerdings sind das doch die Dateien, die vom Compiler generiert werden, 
somit habe ich auch diese Dateien ja keinen einfluss. Im Code selber 
steht

static uint8_t readBuffer[CDC_DATA_OUT_EP_SIZE];
static uint8_t writeBuffer[CDC_DATA_IN_EP_SIZE];

Wie bekomme ich diesen Fehler weg? Umbenennen hat nichts gebracht und 
den Datentyp ändern bringt auch nichts.

von Steffen R. (steffen_rose)


Lesenswert?

Der Fehler sagt, dass Du Funktionen aufrufst, die nicht existieren. 
Überzeuge uns vom Gegenteil. ;-)

Wegen static müßten die Funktionen in CDC.X.production.c enthalten sein, 
nicht nur die Aufrufe.

von Michael S. (rbs_phoenix)


Lesenswert?

Oh man, wenn man zu lange davor sitzt...
Hab das static Array in einer anderen c-Datei als extern "einfügen" 
wollen. Das hat natürlich nicht geklappt.

Vielen Dank

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.