boost.filesystemについて

boost::filesystemを使おうとしたら、外部参照エラーで躓いたのでその解決方法をメモ。

依存ライブラリ

boostjpのヘッダオンリー or ビルドが必要なライブラリに書かれているように、systemライブラリへの依存をしているので、そのリンクが必要(環境:VC2010 64bitWindows7)。

コード

で、書いたコードがこちら。

#include <iostream>
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>

#pragma comment( lib, "boost_system-vc100-mt-gd-1_47.lib" )
//これが必要

int main()
{
	namespace fs = boost::filesystem;

	fs::directory_iterator end;

	for( fs::directory_iterator it( fs::current_path() ); it != end; ++it )
	{
		if( fs::is_directory( *it ) )
			std::cout << "Dir : ";
		else
			std::cout << "File: ";
		std::cout << it->path() << std::endl;
	}

	return 0;
}

備考

出力として、カレントフォルダのファイルとフォルダ一覧が得られます。
尚、実行時には、boost_system-vc***-mt-**.DLLファイルが、プログラムから認識できる場所に必要です。

最近のboost::filesystemでは、leafが無いみたいですね。代わりにpathを使いました。

それでは。