2016-07-22 8 views
0

C++アプリケーションでboostライブラリを使用しようとしています。私はg ++を使ってさまざまなオプションでコンパイルしようとしています。g++ -I /usr/include/boost/filesystem/ -o test.out test.cppしかし、常にプロンプ​​トはerror: 'boost' has not been declaredです。エラー: `boost 'が宣言されていません

そしてここでは私のコードです:

#include <fstream> 
#include <iostream> 
#include <string> 
#include <vector> 
#include <boost/filesystem.hpp> 
using namespace std; 
int main(){ 
    string line; 
    string fileName = "Read.txt"; 
    ifstream file; 
    string str; 
    file.open(fileName.c_str()); 
    cout << "Hello, world!\n"; 
    vector<string> fileLines; 

    fileLines.clear(); 
    while (getline(file, str)) 
    { 
     fileLines.push_back(line); 
    } 
    cout << "Total Line count:"<<fileLines.size()<<endl; 
    fileLines.clear(); 
    cout << "Total Line count:"<<fileLines.size()<<endl; 
    boost::filesystem::path p("/tmp/foo.txt"); 


    return 0; 
} 

あなたがこの問題を解決するために私を助け場合、私は喜んでいるでしょう。

P.S.私もブースト命令をコメントしますが、含まれるといくつかの問題がある

boost/filesystem.hpp: No such file or directory/usr/include/boost/version.hpp

に従ってアップデートを私はCentOSに4.7で自分のアプリケーションをコンパイルすることだし、それはブーストバージョン1.32が含まれています。あなたが試すことができ

+0

@drescherjmを更新しました。通知ありがとう。 – VSB

答えて

0

g++ -std=c++11 -Os -Wall -pedantic test.cpp -lboost_system -lboost_filesystem -o test

を私は同じ問題

があるなら、私に知らせていた

よろしく、

+0

私はgccバージョン3.4.6を使用しています。 '-std = C++ 11'オプションはサポートしていません。 – VSB

+0

-std = C++ 11なしで試しましたか? –

+0

それなしではうまくいきませんでした。 – VSB

1

を働くあなたはまだブーストをインストールしていないようですねあなたが必要とするヘッダファイルが含まれています。あなたがCentOSの上にあるので、以下を行う必要があります。あなたはboost::filesystem::pathを使用しているので、あなたは#include <boost/filesystem.hpp>#include <boost/filesystem/path.hpp>に変更する必要があり

/usr/include/boost/filesystem/path.hpp 

yum install boost-devel 

にしたいヘッダファイルを配置すること。デフォルトでは-I /usr/includeがgccに渡されるため、path.hppに変更した場合を除き、-I /usr/include/boost/filesystemは必要ありません。ただし、別のライブラリで同じヘッダーファイル名が使用されている可能性があり、間違ったヘッダーが含まれている可能性があるため、これは危険です。

+0

私はboost-develパッケージがインストールされています。しかし、詳細をありがとう – VSB

+0

ああ、私は完全にあなたが別のインクルードを参照していたことを意味した 'boost :: filesystem :: path'を見逃していました。回答を更新しています。 –

0

Accodring私のCentOSにLinuxの内のファイルをヘッダには、私は

#include <boost/filesystem/path.hpp> 

#include <boost/filesystem.hpp> 

を変更しても、特別なリンクオプションを使用して私のプログラムをコンパイル:

g++ test.cpp -o test.out -lboost_filesystem 
関連する問題