Boost::Filesystem will nicht
-
Hallo,
ich habe mir eine Funktion gebastelt, die mir alle DLLs in einem angegebenen Verzeichnis auflisten soll. Um portabel zu bleiben, hab ich mich für Boost::Filesystem entschieden:
unsigned int otfw::DynLibLoader::EnumDynLibs(otfw::DynLibEnumeration &target, const std::string format, const std::string &pathname , bool scansubdirs) { path libpath(pathname); unsigned int counter = 0; if(!exists(libpath)) return 0; if(!is_directory(libpath)) return 0; for(path::iterator current_file = libpath.begin(); current_file != libpath.end(); current_file++) { if(is_directory(*current_file)) { //scan recursively in subdirectories if(scansubdirs) counter += EnumDynLibs(target, format, *current_file, true); } else { std::string file_ext = current_file->substr(current_file->length() - 4, current_file->length()); if(file_ext == ".dll") { target.push_back(*current_file); } } } return counter; }Das Problem: Egal welches Verzeichnis ich übergebe, jedes mal gibt exists() bzw. is_directory() false zurück, egal was ich angebe ("./",".","./foo", "foo", "c:/spiele/",...)
Gibt es irgendwas, dass ich nicht beachtet habe?
Ich benutze MS Visual-C++ Express auf WinXP Sp2 mit den Boost-Libraries von Boost-ConsultingDanke schonmal...
Martin
-
Welche Boost-Version benutzt du denn?
-
backslash escapen
-
Ich benutze Boost 1.34
Backslashes benutze ich garnicht, lt. Doku sollten auch Slashes funktionieren...
Hab's auch mit Backslashes "C:\\Spiele" probiert, funktioniert aber auch nicht
EDIT: Hab gerade gesehen, dass Backslashes im Konstruktor für path in Slashes umgewandelt werden...
EDIT2: Exception wird auch nicht geworfen
-
OK, ich hab das Problem scheinbar gelöst, indem ich gegen eine DLL-Version von Boost::Filesystem gelinkt habe...
Kann mir jemand erklären was die verschiedenen Bibliotheken im Boost Verzeichnis bedeuten?- boost_filesystem-vc80-mt-1_34_1.lib (DLL?)
- boost_filesystem-vc80-mt-gd-1_34_1.lib (DLL, Debug?)
- libboost_filesystem-vc80-mt-1_34_1.lib (statisch?)
- libboost_filesystem-vc80-mt-gd-1_34_1.lib (statisch, Debug?)
-
http://www.boost.org/more/getting_started/windows.html#library-naming
Die Doku is da eigentlich sehr brauchbar...
-
Danke, das hab ich nicht gefunden...
Die Doku, naja, ist zwar sehr vollständig und umfangreich aber leider nicht besonders übersichtlich und manchmal ziemlich kryptisch...GRüße,
Martin