我正在尝试编译需要Boost的C ++项目。我从网站下载了最新版本,并将相应的文件复制到相应的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
的工作副本,但我不必手动移动代码文件。
解决方案
我已将boost复制到错误的文件夹中。
答案 0 :(得分:11)
我在Ubuntu 12.10上尝试在没有安装库的情况下使用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
答案 1 :(得分:8)
您应该确保正确设置了包含路径。假设您下载了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
答案 2 :(得分:2)
在Fedora和Centos上yum install -y boost
和yum install -y boost-devel