2011-08-11 8 views
5

Próbuję skompilować projekt C++, który wymaga zwiększenia. Pobrałem najnowszą wersję ze strony internetowej i skopiowałem odpowiednie pliki do odpowiedniego folderu libs (używam MinGW). Kiedy mogę skompilować, jestem dostać ten błąd:Boost lib wydaje się brakować plików hpp?

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

mogę znaleźć kopię roboczą foreach.hpp ale nie powinno się przenieść kod pliki ręcznie.

Rozwiązanie

miałem kopiowane impuls do złego folderu.

+2

Czy zaktualizować zawierać ścieżkę? –

+1

g ++ -I <ścieżka do dodania dir> -c * .cpp – Arunmu

+1

Kiedy mówisz, że skopiowałeś je do "właściwego katalogu libs", który to byłby folder? – janitor048

Odpowiedz

6

Należy upewnić się, że ścieżka dołączania jest ustawiona poprawnie. Zakładając, że pobrano Boost 1.47.0, twoja ścieżka powinna zawierać lokalizację dla twojej instalacji Boost do katalogu boost_1_47_0, ale pomijając numer boost, np.

/path/to/boost/boost_1_47_0 

i nie

/path/to/boost/boost_1_47_0/boost 
11

mam ten błąd na Ubuntu 12.10, gdy próbują wykorzystać impuls z C++ aplikacji bez bibliotek zainstalowane:

[email protected]:~/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. 

Od tego kodu:

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

Jestem na Ubu NTU 12.10 więc zainstalowałem Rozreklamują takiego:

sudo apt-get install libboost-all-dev 

Następnie na ponownej kompilacji, to działa i teraz mogę wykorzystać impuls!

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

Drukuje trzy słowa token, test, string

+0

Potrzebowałem 'libboost1.48-all-dev' podczas kompilowania Wiązania CGAL SWIG na Ubuntu 12.04. –