使用元组增强库简单编译

时间:2012-02-29 20:46:14

标签: c++ boost

任何人都可以告诉我为什么这样做(编译和运行)

#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
//#include <boost/tuple.hpp>
//#include <boost/tuple_comparison.hpp>
//#include <boost/tuple_io.hpp>
using namespace boost;

int main ( )
{
//  tuple<int, char, float> t(2, 'a', 0.9);
//  std::cout << t << std::endl;
    boost::numeric::ublas::matrix<double> m1;
     return 0;
 }

但是当我取消注释与元组相关的行时,它会说

  

boost_tuple.cpp:3:27:致命错误:boost / tuple.hpp:没有这样的文件或目录   编译终止。

我在以下两种情况下都使用以下代码进行编译:

  

g ++ -Wall -c -I / usr / include / boost boost_tuple.cpp

我还检查了/usr/include/boost/tuple.hpp存在

1 个答案:

答案 0 :(得分:4)

如果您想将其包含为:

#include <boost/tuple.hpp>

丢失 boost中的-I/usr/include/boost部分。现在这被评估为/usr/include/boost/boost/tuple.hpp,这可能是你的问题。

修改

确保tuple.hpp安装在您所说的位置,因为在我的系统上它位于另一个文件夹中:/usr/include/boost/tuple/tuple.hpp

这意味着我需要将文件包含为#include <boost/tuple/tuple.hpp>并将其编译为:

g++ tuple.cpp -o tuple -I /usr/include/boost    

<强> tuple.cpp

#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/tuple/tuple.hpp>

using namespace boost;

int main ( )
{
    tuple<int, char, float> t(2, 'a', 0.9);
    boost::numeric::ublas::matrix<double> m1;

    return 0;
 }