我在 testpo.cpp :
中有以下代码#include <iostream>
#include <boost/program_options.hpp>
#include <fstream>
int main(int argc, char* argv[]) {
namespace po = boost::program_options;
po::options_description config_descriptor;
po::variables_map vm;
config_descriptor.add_options()
("var1", po::value<int>()->required(), "var1");
//po::store(po::parse_config_file(input_config_file, config_descriptor, false), vm);
po::store(po::parse_command_line(argc, argv, config_descriptor), vm);
po::notify(vm);
try {
std::cout << vm.count("var1") << std::endl;
std::cout << "Count printed" << std::endl;
if (vm.count("var1") > 0) {
std::cout << "Imhere\n";
std::cout << "var1: " << vm["var1"].as<int>() << std::endl;
} else {
std::cout << "Missing var1 in config file" << std::endl;
}
} catch (std::exception& e) {
std::cout << "Exception: " << e.what() << std::endl;
}
}
我使用以下命令编译:
g++ -std=c++11 testpo.cpp -lboost_program_options
我这样运行:
./a.out --var1 10
我得到以下输出:
1
Count printed
Imhere
Exception: boost::bad_any_cast: failed conversion using boost::any_cast
我已经看过this,但它似乎没什么帮助。我无法找到我做错的事情。
我的系统的相关配置:
g ++(Ubuntu 5.2.1-22ubuntu2)5.2.1 20151010
增强版:1.58
当我在另一个系统上运行它时,配置:
g ++(GCC)4.8.3 20140911(Red Hat 4.8.3-9)
提升版本:1.53
这是助推器中的错误吗?
答案 0 :(得分:0)
由于我只是遇到了同样的问题,为将来参考,我将在此处添加答案。
由于您的
中缺少return语句而引发异常int main
编辑:罢工。我很傻,忘了在案例陈述中休息一下。