boost::process 无法编译,因为 boost::throw_exception

boost::process cannot compile because of boost::throw_exception

当尝试包含 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 文件会抛出这样的异常,但它们不会出现在错误中,因为它们在未定义的定义守卫后面。

使用 boost::system::system_category() 而不是 boost::system::system_category。请注意,后者可能适用于较旧的增强版本。参见 here

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