【发布时间】:2015-10-16 08:17:20
【问题描述】:
我在我的程序中使用了boost::filesystem::is_directory(),问题是当我使用选项-DBOOST_FILESYSTEM_VERSION=3 编译我的程序时,程序无法正常运行。 boost 版本是 1.44.0。
具体来说,我通过以下命令构建文件系统库:
./bjam --toolset=gcc define=BOOST_FILESYSTEM_VERSION=3 --with-filesystem stage
我用这样的命令构建我的程序。
g++ -I boost_1_44_0_folder test.cpp -o test boost_1_44_0_folder/stage/lib/libboost_filesystem.a boost_1_44_0_folder/stage/lib/libboost_system.a -DBOOST_FILESYSTEM_VERSION=3
当我执行./test时,结果是“不是目录”。
但是如果我用这样的命令构建我的程序。
g++ -I boost_1_44_0_folder test.cpp -o test boost_1_44_0_folder/stage/lib/libboost_filesystem.a boost_1_44_0_folder/stage/lib/libboost_system.a
当我执行 ./test 时,结果是“is dir”。
而我的测试代码如下所示。
test.cpp
#include <boost/filesystem.hpp>
#include <iostream>
using namespace std;
int main() {
namespace bf = boost::filesystem;
bf::path p("/home");
if (!boost::filesystem::is_directory(p)) {
cout << "is not dir" << endl;
} else {
cout << "is dir" << endl;
}
return 0;
}
【问题讨论】:
-
/home是目录吗?是符号链接吗?挂载点? -
其他目录也一样。
-
您使用的是哪个 GCC 版本? Boost 将突破几乎所有 C++ 编译器的极限,而 Oracle 随 Solaris 提供的版本往往有点过时。 (如果您使用的是 Sun 提供的 Solaris 版本,那它确实过时了......)
标签: c++ gcc boost filesystems solaris