2012-12-17 125 views
0

我想遍历目录并打印从根开始的所有文件的名称。递归扫描文件的目录

这是我在程序中使用Boost::Filesystem(1.52.0)写的一小段代码。

void testApp::getNames(const string& dirPath, string& fileExtension) 
{ 
    namespace fs = boost::filesystem; 
    namespace sys = boost::system; 
    fs::path filePath(dirPath); 
    for(fs::recursive_directory_iterator dir(filePath), dir_end; dir!=dir_end ;++dir) 
    { 
     cout<<*dir; 
    } 
} 

在尝试编译这个,奇怪的是我正在建立一个指向上下面的代码片段path.hpp文件错误:

static const codecvt_type& codecvt() 
    { 
     return *wchar_t_codecvt_facet(); 
    } 

,我得到的错误是undefined reference to boost::filesystem3::path::wchar_t_codecvt_facet()'|

我在Ubuntu 12.10为我的项目使用Codeblocks IDE。

+1

这是一个链接器错误 - 文件系统库包含必须编译和链接的组件 - 它不是仅包含头文件的库。 –

+0

您可以指向必须使用的链接器标志/ – user1240679

+1

是不是只要添加-lboost_filesystem? – daramarak

回答

1

这是一个链接器错误。您需要链接到Boost文件系统库。

在IDE中,应该有一个设置用于在项目设置中的某处添加库。 (我不知道确切的位置,因为我从来没有使用过代码块。)

+0

我已经在我的makefile'USER_LDFLAGS = -lboost_system'中使用了以下链接器标志。 Boost :: Filesytem链接器是不同的? – user1240679

+1

@ user1240679是的,您需要'boost_filesystem'库,因此请将'-lboost_filesystem'添加到您的'USER_LDFLAGS'变量中。 –

+0

唷!在这件事上狠狠地抨击了我的头,结果只是连接器标志。谢谢 – user1240679