我试图在我的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
。
答案 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