1

当试图包含 boost::process 库时,我得到了 2 个与 boost::process pipe.hpp 文件有关的错误,它处理异常的方式。

'<function-style-cast>': cannot convert from 'initializer list' to 'boost::system::system_error' | pipe.hpp | line 129
'boost::throw_exception': no matching overloaded function found | pipe.hpp | line 129

这是 boost::process pipe.hpp 中的违规行:

boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: CreatePipe failed")); 

我认为这与 boost 可能如何改变它处理异常的方式有关,并且 boost::process 没有更新以支持它,但是我不熟悉 boost 是如何改变的。整个 pipe.hpp 文件会抛出这样的异常,但它们不会出现在错误中,因为它们位于未定义的定义保护之后。

4

2 回答 2

4

使用boost::system::system_category()而不是boost::system::system_category. 请注意,后者可能在较旧的 bo​​ost 版本中有效。见这里

于 2016-04-07T12:06:52.757 回答
1

您可以使用异常支持重建您的项目。添加编译标志 /EHsc 或 /EHa 或 /EHs

于 2016-04-07T12:33:39.333 回答