错误:`提升'尚未宣布

时间:2016-07-22 22:00:28

标签: c++ linux boost centos

我试图在我的C ++应用程序中使用boost库。我尝试使用带有不同options.e.g g++ -I /usr/include/boost/filesystem/ -o test.out test.cpp的g ++来编译它,但它总是提示error: 'boost' has not been declared

这是我的代码:

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <boost/filesystem.hpp>
using namespace std;
int main (){
    string line;
    string fileName = "Read.txt";
    ifstream file;
    string str; 
    file.open(fileName.c_str());
    cout << "Hello, world!\n";
    vector<string>  fileLines;

    fileLines.clear();
    while (getline(file, str))
    {
        fileLines.push_back(line);
    }
    cout << "Total Line count:"<<fileLines.size()<<endl;
    fileLines.clear();
    cout << "Total Line count:"<<fileLines.size()<<endl;
    boost::filesystem::path p("/tmp/foo.txt");


    return 0;
}

如果你能帮助我解决这个问题,我将很高兴。

P.S。我在Centos 4.7中编译我的应用程序,它根据/usr/include/boost/version.hpp包含Boost版本1.32

更新

我还评论过boost指令,但是包含boost/filesystem.hpp: No such file or directory

存在一些问题

3 个答案:

答案 0 :(得分:1)

听起来您尚未安装包含所需的boost头文件。由于您使用的是CentOS,因此您需要:

yum install boost-devel

这将把你想要的头文件放在:

/usr/include/boost/filesystem/path.hpp

由于您使用的是boost::filesystem::path,因此您应该将#include <boost/filesystem.hpp>更改为#include <boost/filesystem/path.hpp>。由于-I /usr/include默认情况下会传递给gcc,因此您不需要-I /usr/include/boost/filesystem,除非您将包含更改为path.hpp。但是,这会很危险,因为另一个库可能具有相同的头文件名,然后您可能包含错误的标题。

答案 1 :(得分:0)

您可以尝试:    g++ -std=c++11 -Os -Wall -pedantic test.cpp -lboost_system -lboost_filesystem -o test

我遇到了同样的问题

让我知道是否有效

最好的问候,

答案 2 :(得分:0)

根据Centos Linux中的头文件,我改变了

#include <boost/filesystem.hpp>

#include <boost/filesystem/path.hpp>

并且还使用特殊链接选项编译了我的程序:

g++ test.cpp -o test.out  -lboost_filesystem