Verzeichnisfunktionen in Visual Studio
-
Hi,
Ich hab ein Problem. Folgender Code funktioniert nicht in Visual Studio 2010:
... #include <direct.h> #include <sys\types.h> ... DIR *dir = NULL; ..
--> Der Datentyp "DIR" wird von Visual Studio nicht erkannt. Woran liegt das und was kann ich tun?
viele grüße
-
Wo soll DIR denn definiert sein?
-
Weiß ich nicht.. Visual Studio findet es nicht. Der gcc-Compiler aber schon.
viele grüße
-
Das ist wahrscheinlich nicht standardkonform, sondern eine GCC-Spezifische Erweiterung.
-
Ja gibt es denn dann nicht eine gute Alternative. In die Win32-API zuzgreifen ist unelegant und zu aufwendig.
viele grüße
-
TokenX schrieb:
Ja gibt es denn dann nicht eine gute Alternative. In die Win32-API zuzgreifen ist unelegant und zu aufwendig.
Übersetze es mit gcc.
-
Auch mit gcc kompiliert das mehr oder weniger zufällig - DIR und die dazugehörigen Funktionen aus dem POSIX-Standard befinden sich in <dirent.h>, nicht <direct.h>. MSVC kennt die aber alle nicht, weil er POSIX nicht implementiert - dafür gibt es da eine <direct.h>, in der sich alte Funktionen zum Umgang mit Laufwerken unter DOS befinden.
Es gibt hier eine Implementation, die auf dem WinAPI aufsetzt und mit MSVC benutzbar ist.
-
TokenX schrieb:
Weiß ich nicht.. Visual Studio findet es nicht. Der gcc-Compiler aber schon.
viele grüße
Nimm unter Windows den MinGW, der dortige gcc bietet dirent.h an und somit auch DIR, nebst opendir/closedir/readdir.
-
@ Seldon
MS unterstützt Posix, aber nur unvollständig
direct.h (VS) bietet einen Teil Posix und MS-Dos-Funktionen zum File und Dir-Handling. dirent.h hab ich bei VS nicht gefunden.Weitere betriebssystemspezifische Routinen findest Du unter
CRT
http://msdn.microsoft.com/de-de/library/59ey50w6.aspx
Filemanagement
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364229%28v=VS.85%29.aspx
MFC
http://msdn.microsoft.com/de-de/library/d06h2x6e%28v=VS.80%29.aspxDie dirent-Routinen mappen API/CRT-Routinen.
Wenn es nicht Posix-konform bzw. nur Windows als Zieplattform, würde ich die MS-Funktionalitäten nutzen.