Интегрировали это (версия 1.52.0) в мое приложение, но наткнулись на проблему, как описано выше.
В примере, приложенном к исключению, метод метода() всегда имеет тэг% canonical_option% intact и не заменяется моим именем параметра.
Я использую VS2008, отключил unicode (опция "none" ) и удалил все остальные файлы из моего проекта, это только этот код в файле main.cpp.
Или у меня все это неправильно, и есть что-то еще, что я должен вызывать для форматирования сообщения об исключении с правильным именем параметра?
#include <boost/program_options.hpp>
namespace po = boost::program_options;
using namespace std;
int main(int argc, char* argv[])
{
try {
po::options_description optionalParams("optional");
optionalParams.add_options()
("log_severity,l", po::value<int>()->required(), "Minimum severity logging level")
("log_file,g", po::value<string>(), "Full path to log file")
;
po::variables_map optMap;
po::parsed_options parsed = po::command_line_parser(argc, argv)
.options(optionalParams)
.allow_unregistered()
.run();
po::store(parsed, optMap);
po::notify(optMap);
}
catch(po::error e)
{
cout << e.what();
return 0;
}
return 0;
}