web-dev-qa-db-ja.com

Boost libにhppファイルがないように見えますか?

Boostを必要とするC++プロジェクトをコンパイルしようとしています。 Webサイトから最新のビルドをダウンロードし、適切なファイルを適切なlibsフォルダーにコピーしました(MinGWを使用しています)。コンパイルすると、次のエラーが発生します。

In file included from main.cpp:4:0:
headers.h:59:29: fatal error: boost/foreach.hpp: No such file or directory
compilation terminated.

foreach.hppの作業コピーを見つけることができますが、コードファイルを手動で移動する必要はありません。

解決策

ブーストを間違ったフォルダにコピーしました。

11
David Perry

インクルードパスが正しく設定されていることを確認する必要があります。 Boost 1.47.0をダウンロードしたとすると、パスにはboost_1_47_0ディレクトリまでのBoostインストールの場所が含まれている必要がありますが、boostディレクトリは省略されています。

/path/to/boost/boost_1_47_0

ではなく

/path/to/boost/boost_1_47_0/boost
9
Nicola Musatti

ライブラリをインストールせずにC++アプリケーションでboostを使用しようとすると、Ubuntu12.10でこのエラーが発生しました。

el@apollo:~/foo8/33_parse_file$ g++ -o s s.cpp
s.cpp:3:29: fatal error: boost/foreach.hpp: No such file or directory
compilation terminated.

このコードから:

#include <iostream>
#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>
using namespace std;
int main(){
  cout << "hi";
}

私はUbuntu12.10を使用しているので、次のようにBoostをインストールしました。

Sudo apt-get install libboost-all-dev

その後、再コンパイルすると機能し、ブーストを使用できるようになりました。

#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>

using namespace std;
using namespace boost;

int main(int argc, char** argv)
{
    string text = "token  test\tstring";

    char_separator<char> sep(" \t");
    tokenizer<char_separator<char> > tokens(text, sep);
    BOOST_FOREACH(string t, tokens)
    {
        cout << t << "." << endl;
    }
}

tokenteststringの3つの単語を出力します

14
Eric Leschinski

FedoraとCentosについてyum install -y boostおよびyum install -y boost-devel

2
adivis12