параметры программы Boost выдают исключение, множественные совпадения и сбой преобразования символов - PullRequest
0 голосов
/ 23 января 2019

Странно то, что эта проблема возникает только тогда, когда я создаю код как разделяемую библиотеку и запускаю его как плагин. Я создаю объект options_description и вызываю add_options (). Когда я вызываю store (), он вылетает, выдает исключение, которое я не могу поймать, и завершается.


Код:

try
{
    //po::options_description desc("Allowed options");
    m_desc->add_options()
    ("help,h", "Print a help message then exit")
    ("blub,b", po::value<int>()->default_value(0), "blub");

    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, *m_desc), vm);
}
catch (const std::exception& e)
{
    std::cerr << "Exception: " << e.what() << std::endl;
    std::cerr << "Details: " << boost::diagnostic_information(e) <<   
    std::endl;
}
catch (const boost::exception& e)
{
    std::cerr << "Boost Exception: " <<
    boost::diagnostic_information(e) << std::endl;;
}
catch(...)
{
    std::cerr << "Unhandled Exception: " <<
    boost::current_exception_diagnostic_information() << std::endl;
}

исключение 1 :

terminate called after throwing an instance of 'boost::exception_detail::clone_impl< boost::exception_detail::error_info_injector< boost::program_options::multiple_occurrences> >'<br> what(): option cannot be specified more than once


Когда я оборачиваю options_description в общий указатель, он падает, выдает другое исключение и не завершается.


исключение 2 :

Exception: character conversion failed Details: Throw location unknown (consider using BOOST_THROW_EXCEPTION) Dynamic exception type: boost::exception_detail::clone_impl< boost::exception_detail::error_info_injector<std::logic_error> > std::exception::what: character conversion failed


Я использую boost 1.54, но у меня та же проблема с 1.58. Моя ОС - OpenSuse Leap 42.1, GCC 4.8.5.

Я не знаю, как найти причину. Информация из исключений не очень полезна. Может быть, это проблема с ссылками / зависимостями.

...