我在我的程序中使用了boost::filesystem::is_directory()
,問題是當我使用選項-DBOOST_FILESYSTEM_VERSION=3
編譯我的程序時,程序無法正常運行。升級版本是1.44.0。boost1.44.0 filesystem v3無法在solaris sparc 64bit平臺上正常運行
具體來說,我用下面的命令建立文件系統庫:
./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'是一個目錄嗎?它是符號鏈接嗎?一個掛載點? – sehe
爲其他目錄,它是一樣的。 – Jz2015
你使用的是什麼GCC版本? Boost將推動幾乎所有C++編譯器的限制,而Oracle附帶的Solaris版本往往有點過時。 (如果你使用的是Solaris發佈的Solaris版本,那真的是過時了......) –