boost::process не может скомпилироваться из-за 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 генерирует подобные исключения, но они не отображаются в ошибках, так как находятся за определенными защитными устройствами, которые не были определены.
2 ответа
Использование boost::system::system_category()
вместо boost::system::system_category
, Обратите внимание, что последний, возможно, работал в более старых версиях Boost. Смотрите здесь.
Вы можете перестроить свой проект с поддержкой исключений. Добавить флаг компиляции /EHsc или /EHa или / EHs