Forum: Mikrocontroller und Digitale Elektronik Elm Chan include windows.h


von Roman S. (kadege)


Angehängte Dateien:

Lesenswert?

Hallo,
habe ein Problem mit dem Elm-Chan-FAT-Code, den ich nicht zum Laufen 
bringe. In einem der .c-files findet sich folgende Zeile:

#include <windows.h>

Wenn ich kompiliere, kommt die Fehlermeldung, dass die windows.h nicht 
gefunden wird.

Ich vermute, dass in dem include die Funktion f_mount enthalten ist, 
denn diese ist offenbar in keinem der .c-files oder include files 
enthalten, die zu Elm Chans Code gehören.

Kann jemand weiterhelfen?

Dank im Voraus,
Roman

von c-hater (Gast)


Lesenswert?

Roman S. schrieb:

> windows.h

> Kann jemand weiterhelfen?

Wie wäre es mit Microsoft? Oder Google?

von robo-man (Gast)


Lesenswert?

Hallo Roman,
die f_mount Funktion ist normalerweise in der ff.h Datei enthalten. 
Vielleicht hast du irgendwo #include "ff.h" vergessen?

von Fred (Gast)


Lesenswert?

Den include sehe ich nur in integer.h, und da ist er natürlich hinter 
einem #ifdef _WIN32 verborgen. Wenns anderswo auch nochmal vorkommen 
sollte, dann sicher auch hinter _WIN32.

Warum hast du _WIN32 also gesetzt, wenn du kein Windows verwendest?

von Rolf Magnus (Gast)


Lesenswert?

c-hater schrieb:
> Wie wäre es mit Microsoft?

Meines Wissens gibt's von Microsoft keine Windows-Version für AVR, daher 
glaube ich nicht, daß es von dort viel Hilfe gibt. Man muß sich aber 
schon fragen, was auf dem AVR ein windows.h zu suchen hat.

von Roman S. (kadege)


Lesenswert?

Hallo,
vielen Dank für Eure Antworten!
Ich habe (auch unter deren Berücksichtigung) noch mal systematisch 
überprüft, was ich in makefiles etc. geändert habe, alles sortiert, und 
siehe da: Es geht!

@fred:
Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht, 
allerdings ohne Erfolg. Im Netz habe ich verschiedene Hinweise gefunden, 
dass man "windows.h" nicht einfach als file kopieren kann, die 
Begründungen hierfür jedoch nicht verstanden... Das war der Grund für 
die Frage.

@robo-man:
[die f_mount Funktion ist normalerweise in der ff.h Datei enthalten.
Vielleicht hast du irgendwo #include "ff.h" vergessen?]
Das habe ich überprüft; tatsächlich wird die "ff.h" in "main.c" UND in 
"ff.c" mittels "include" eingebunden.

Mein Fehler lag im Umgang mit den Makefiles (sind Anfängerprobleme, bin 
gerade dabei zu verstehen, was die genau tun); jetzt forsche ich noch 
ein wenig weiter, dann melde ich mich mit präziseren Fragen zu makefiles 
zurück :-)

Danke!

von Peter II (Gast)


Lesenswert?

Roman S. schrieb:
> Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht,

nein machst du nicht wirklich - du willst nicht ein Windows Programm 
bauen oder doch?

Wenn ja brauchst du das PlatformSDK von MS.

von Marcel (Gast)


Lesenswert?

Roman S. schrieb:
> Ich verwende WINDOWS; habe den Rechner nach "windows.h" durchsucht,
> allerdings ohne Erfolg. Im Netz habe ich verschiedene Hinweise gefunden,
> dass man "windows.h" nicht einfach als file kopieren kann, die
> Begründungen hierfür jedoch nicht verstanden... Das war der Grund für
> die Frage.

Die windows.h wird u.a. mit Visual Studio ausgeliefert und ist sowas wie 
die avr/io.h oder picxxxx.h nur eben für Grundlegende Windows-relevante 
Funktionen. Dahinter stecken noch weitere benötigte Dateien, wodurch man 
die nicht einfach kopieren kann, da dann die Abhängigkeiten fehlen.

Auch wenn du Windows zum kompilieren benutzt ist dein Zielsystem 
immernoch ein Mikrokontroller.

von W.S. (Gast)


Lesenswert?

Roman S. schrieb:
> Mein Fehler lag im Umgang mit den Makefiles

Dann versuche doch erst einmal, den Compiler direkt, als per 
Kommandozeile bzw. Batchdatei aufzurufen. Einfach damit du mitkriegst, 
was für Kommandozeilenparameter der Compiler in deinem Fall tatsächlich 
benötigt, um das Richtige zu machen.

Ansonsten geb ich dir den Tip, gerade bei Chan's Quellen darauf zu 
achten, daß der Startupcode tatsächlich allen benutzten RAM auf 0 
ablöscht - auch nach einem eventuellen Warmstart. Chan's ihrer ist m.E. 
ein bissel bockig und besteht darauf, daß alle globalen struct's von ihm 
am Anfang auf 0 abgelöscht sind. Ich hatte damals Streß damit und 
deshalb in dessen Init-Routine das Initialisieren der Variablen 
nachgerüstet.

W.S.

von Frank M. (frank_m35)


Lesenswert?

Schau mal in welchem File das steht.
Im Integer.h.

Du compilierst zwar auf Windows aber nicht für Windows, sondern für 
deinen AVR, d.h. das was im Bereich für '/* Embedded platform */' steht 
willst du haben.

Keine Ahnung warum bei dir _WIN32 definiert ist, aber ich vermute du 
kannst einfach den Block
1
#ifdef _WIN32  /* FatFs development platform */
2
3
#include <windows.h>
4
#include <tchar.h>
5
6
#else      /* Embedded platform */
und eins der zwei unteren
1
#endif
entfernen.

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.