【问题标题】:Boost library simple compilation with tuples使用元组进行 Boost 库简单编译
【发布时间】:2012-03-01 05:26:01
【问题描述】:

谁能告诉我为什么会这样(编译和运行)

#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是否存在

【问题讨论】:

标签: c++ boost


【解决方案1】:

如果您想将其包含为:

#include <boost/tuple.hpp>

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

编辑:

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

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

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;
 }

【讨论】:

  • 嗯..这似乎不是问题。我可以使用 cmets 运行代码(使用 -I/usr/include 和 -I/usr/include/boost).. 但在取消注释有关元组的部分后,它们都不起作用。
  • 更新了我的答案,请仔细查看。顺便说一句,你不能像你试图做的那样打印一个元组。 std::cout 只能理解字符串和字面量,不能理解元组对象。
  • 感谢您的建议,这就是问题所在!并且 std::cout 也适用于元组对象!!
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
相关资源
最近更新 更多