2011-08-11 10 views
5

Estoy intentando compilar un proyecto de C++ que requiere Boost. Descargué la última compilación del sitio web y copié los archivos apropiados en la carpeta libs apropiada (estoy usando MinGW). Cuando compilo, estoy conseguir este error:¿Parece que la lib de Boost no tiene archivos 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. 

puedo encontrar una copia de trabajo de foreach.hpp pero no debería tener que mover el código archivos manualmente.

Solución

había copiado impulso a la carpeta equivocada.

+2

¿Ha actualizado la ruta de inclusión? –

+1

g ++ -I -c * .cpp – Arunmu

+1

Cuando dice que los copió en la "carpeta de libs apropiada", ¿qué carpeta sería? – janitor048

Respuesta

6

Debe asegurarse de que su ruta de inclusión esté configurada correctamente. Suponiendo que descargó Boost 1.47.0, su ruta debería contener la ubicación de su instalación de Boost hasta el directorio boost_1_47_0, pero omitiendo el boost, por ejemplo.

/path/to/boost/boost_1_47_0 

y no

/path/to/boost/boost_1_47_0/boost 
11

Tengo este error en Ubuntu 12.10 cuando se trata de impulsar el uso de una aplicación en C++ sin las bibliotecas instaladas:

[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. 

De este código:

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

Estoy en Ubu ntu 12.10 así que instala Boost así:

sudo apt-get install libboost-all-dev 

Luego, el recompilación, funciona y ahora puede utilizar impulso!

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

imprime las tres palabras token, test, string

+0

Necesitaba 'libboost1.48-all-dev' al compilar CGAL SWIG Bindings en Ubuntu 12.04. –

Cuestiones relacionadas