2011-08-11 2 views
5

Tôi đang cố gắng biên dịch một dự án C++ yêu cầu Tăng cường. Tôi đã tải xuống bản dựng mới nhất từ ​​trang web và sao chép các tệp thích hợp vào thư mục libs thích hợp (tôi đang sử dụng MinGW). Khi tôi biên dịch, tôi nhận được lỗi này:Tăng lib dường như bị thiếu tệp 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. 

Tôi có thể tìm bản sao làm việc của foreach.hpp nhưng tôi không cần phải di chuyển tệp mã theo cách thủ công.

Giải pháp

tôi đã sao chép tăng vào thư mục sai.

+2

Bạn có cập nhật Bao gồm đường dẫn? –

+1

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

+1

Khi bạn nói rằng bạn đã sao chép chúng vào "thư mục libs thích hợp", thư mục nào sẽ là? – janitor048

Trả lời

6

Bạn nên đảm bảo rằng đường dẫn bao gồm của bạn được đặt chính xác. Giả sử bạn đã tải xuống Boost 1.47.0 đường dẫn của bạn nên chứa vị trí để cài đặt Boost của bạn lên thư mục boost_1_47_0, nhưng bỏ qua một số boost, ví dụ:

/path/to/boost/boost_1_47_0 

và không

/path/to/boost/boost_1_47_0/boost 
11

Tôi đã nhận lỗi này trên Ubuntu 12.10 khi cố gắng sử dụng tăng với một ứng dụng C++ mà không có thư viện cài đặt:

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

Từ mã này:

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

Tôi đang ở Ubu ntu 12.10 vì vậy tôi đã cài đặt Boost như sau:

sudo apt-get install libboost-all-dev 

Sau đó, biên dịch lại, nó hoạt động và bây giờ tôi có thể sử dụng tăng!

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

In ba chữ token, test, string

+0

Tôi cần 'libboost1.48-all-dev' khi biên dịch CGAL SWIG Bindings trên Ubuntu 12.04. –