提升lib似乎缺少hpp文件?

Dav*_*rry 10 c++ boost mingw

我正在尝试编译一个需要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.
Run Code Online (Sandbox Code Playgroud)

我可以找到一个工作副本,foreach.hpp但我不应该手动移动代码文件.

我把boost复制到了错误的文件夹.

Eri*_*ski 14

我在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.
Run Code Online (Sandbox Code Playgroud)

从这段代码:

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

我在Ubuntu 12.10上,所以我像这样安装了Boost:

sudo apt-get install libboost-all-dev
Run Code Online (Sandbox Code Playgroud)

然后重新编译,它工作,现在我可以使用提升!

#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;
    }
}
Run Code Online (Sandbox Code Playgroud)

打印三个字token,test,string


Nic*_*tti 9

您应该确保正确设置了包含路径.假设你下载了Boost 1.47.0,你的路径应该包含你的Boost安装到boost_1_47_0目录的位置,但不包括那个boost,例如

/path/to/boost/boost_1_47_0
Run Code Online (Sandbox Code Playgroud)

并不是

/path/to/boost/boost_1_47_0/boost
Run Code Online (Sandbox Code Playgroud)


adi*_*s12 5

在 Fedora 和 Centos 上yum install -y boost以及yum install -y boost-devel