Похоже, что в Boost lib отсутствуют файлы hpp? - PullRequest
8 голосов
/ 11 августа 2011

Я пытаюсь скомпилировать проект C ++, который требует Boost. Я скачал последнюю версию с веб-сайта и скопировал соответствующие файлы в соответствующую папку 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, но мне не нужно было перемещать файлы кода вручную.

Решение

Я скопировал буст в неправильную папку.

Ответы [ 2 ]

12 голосов
/ 21 февраля 2014

Я получил эту ошибку в Ubuntu 12.10 при попытке использовать boost с приложением C ++ без установленных библиотек:

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";
}

Я нахожусьUbuntu 12.10, поэтому я установил Boost следующим образом:

sudo apt-get install libboost-all-dev

Затем при перекомпиляции все работает, и теперь я могу использовать boost!

#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;
    }
}

Печатает три слова token, test, string

8 голосов
/ 11 августа 2011

Вы должны убедиться, что ваш путь включения задан правильно.Предполагая, что вы загрузили Boost 1.47.0, ваш путь должен содержать расположение к вашей установке Boost вплоть до каталога boost_1_47_0, но без указания boost, например

/path/to/boost/boost_1_47_0

, а не

/path/to/boost/boost_1_47_0/boost
...