我正在尝试使用 Boost.program_options,但位置参数不起作用。我是这方面的新手。
#include "Application.h"
#include <iostream>
#include <vector>
#include <fstream>
#include <istream>
#include <string>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
using namespace std;
int Application::run(int ac, char *av[])
{
po::options_description opts_desc("Allowed options");
opts_desc.add_options()
("help,h", "produce help message")
;
po::positional_options_description pos_opts_desc;
pos_opts_desc.add("xyz", -1); // +1 doesnt work either
po::variables_map vm {};
cout << "Before store" << endl;
po::store(po::command_line_parser(ac, av)
.options(opts_desc)
.positional(pos_opts_desc)
.run(), vm);
cout << "After store" << endl;
return 1;
}
这是一段非常简单的代码,什么都不做。但是,它不起作用,在调用 po::store,程序静默退出,“After store”消息没有打印出来。
我已经在 vscode 中设置了 gdb,可以看到失败发生在商店。
然而,没有错误信息,什么都没有。
我正在使用 boost 1.77 与 MinGW 的一些发行版打包在一起。
我不确定要提供更多详细信息。
当我注释掉 .positional 函数调用时,程序按预期完成。
我做错了什么?