【问题标题】:Processes in boost升压过程
【发布时间】:2010-11-22 12:27:34
【问题描述】:

我正在使用boost.process(用于提升的附加库)。在我为链接提供的页面上,您可以找到使用示例。我安装了库,添加:#include <boost/process.hpp> 和一些以下代码:

namespace bp = ::boost::processes; // In samples the namespace name is process!
bp::command_line temp("ls");

error: ‘command_line’ is not a member of ‘bp’

我对所有描述的样本都有这样的错误。怎么了?


我知道真正的命名空间应该是process,但我查看了代码,发现它是用boostprocesses 命名空间包装的。所以没有任何process 命名空间。

【问题讨论】:

  • 您要编译哪个样本?我没有看到您链接的页面上引用了bp::command_line
  • boost.process 有很多不同的版本,见这里stackoverflow.com/a/12327853/225186。确保您使用的是一致的文档。

标签: c++ boost process


【解决方案1】:

您是否可能没有使用不同/旧/替代版本的升压流程,即您最近是否从sandbox 获得升压流程? 如果你打开 boost/process.hpp,你会在顶部看到以下内容吗?

// 版权所有 (c) 2006, 2007 Julio M. Merino Vidal // 版权所有 (c) 2008, 2009 Boris Schaeling

我记得过去有另一位作者提供的另一个版本的 boost 过程。

我查看了 Vidal/Schaeling 的一些进程文件,它们肯定都使用 boost::process 命名空间。如果您在源代码中没有看到,那么您很可能正在使用另一个版本。此外,我在http://www.highscore.de/boost/process/ 的参考资料中没有看到任何 command_line 条目。仅供参考,提升流程最近也经历了许多变化(在关于提升邮件列表的讨论之后)。

【讨论】:

    【解决方案2】:

    好吧,正如您自己所说,示例中的命名空间是 ::boost::process。行:

    namespace bp = ::boost::processes

    只定义一个命名空间别名:bp::boost::processes 的别名。写bp::command_line 和写boost::processes::command_line 完全一样。由于command_line 位于boost::process 命名空间中,因此找不到该类型。

    【讨论】:

    • @Ockonal:那么抱歉,请忽略我的回答。我想提供更多帮助,但我无法从工作中下载 boost.process T_T
    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多