2013-06-17 2 views
0

Я пытаюсь использовать итератор каталогов из библиотеки boost, и я хочу создать цикл, в котором я перебираю каталог и помещаю имена файлов в переменную, Я мог бы использовать функцию leaf() раньше, но теперь он устарел. Я не могу использовать path(). Filename() и даже могу использовать native() и string(), потому что компилятор C дает мне ошибки. Как я могу исправить этот код ниже?проблемы с листингом и получением имен файлов с помощью directory_iterator с библиотекой ускорения C++

boost::filesystem::directory_iterator end_iter; 
for (boost::filesystem::directory_iterator file(dir);file != end_iter;++file) 
{ 
     /*check if file is image */ 
     string fileName=file->path().filename().native(); //the error happens here 
     // i can use path().filename().string() either 
     boost::match_results<string::const_iterator> what; 
     if (0 == boost::regex_search(fileName, what, e, boost::match_default)) 
     { 
      continue; 
     }; 
... 

спасибо.

+1

сообщение об ошибке из вашего компилятора может быть полезно – rectummelancolique

+0

Спасибо за ответ. Ошибка:/usr/bin/ld: /tmp/cclbmY0q.o: undefined ссылка на символ '_ZN5boost6system15system_categoryEv' /usr/bin/ld: note: '_ZN5boost6system15system_categoryEv' определяется в DSO /usr/lib/libboost_system.so. 1.49.0, попробуйте добавить его в командную строку компоновщика /usr/lib/libboost_system.so.1.49.0: не удалось прочитать символы: недопустимая операция – mad

+0

«Потому что компилятор ** C ** дает мне ошибки». Думаю, я нашел вашу проблему;) – Casey

ответ

0

Проблема решена после добавления -lboost_system после -lboost_filesystem в make-файле, как это было предложено @Casey и @rectummelancolique.