1
我有一个问题。我正在使用Cmake并使用VS 2015进行提升。Cmake,Boost解析命令行
我打算开发一个使用cgal和assimp的工具。将文件格式转换为我自己的。但是,我遇到了一个问题,可能很简单,但无法看到它。
当我按下F5时,出现调试错误,如我附加的两个图像。我也附上我的代码。这些照片是在这里:
#include <boost/asio.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/program_options.hpp>
#include <boost/system/error_code.hpp>
#include <iostream>
#include <sstream>
#include <string>
struct CMDOPTIONS {
std::string input, output, directory;
int points;
};
namespace po = boost::program_options;
bool process_command_line(int argc, char **argv, CMDOPTIONS &cmdoptions1) {
if (argv == nullptr) {
return false;
}
try {
po::options_description desc("Program Usage");
po::options_description desc ("Program Usage");
desc.add_options()
("halp, h", "Halp!")
("input, i", po::value<std::string>(&cmdoptions1.input), "Specify Input")
("output, o", po::value<std::string>(&cmdoptions1.output) ,"Specify Output")
("points, p", po::value<int>(&cmdoptions1.points), "% of reduced points")
("directory, d", po::value<std::string>(&cmdoptions1.directory)->required(), "set the directory");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("help")) {
std::cout << desc << std::endl;
return false;
}
// trolololol XD
if (vm.count("input")) {
&cmdoptions1.input;
}
if (vm.count("output")) {
&cmdoptions1.output;
}
if (vm.count("points")) {
&cmdoptions1.points;
}
if (vm.count("directory")) {
&cmdoptions1.directory;
}
} catch (std::exception &e) {
std::cerr << "Error: " << e.what() << std::endl;
return false;
} catch (int e) {
std::cerr << "Unknown error!" << e << std::endl;
return false;
}
return true;
}
int main(int argc, char **argv, CMDOPTIONS &cmdoptions1) {
bool result = process_command_line(argc, argv, cmdoptions1);
if (!result)
return -1;
std::cout << "input" << &cmdoptions1.input << std::endl;
std::cout << "output" << &cmdoptions1.output << std::endl;
std::cout << "points" << &cmdoptions1.points << std::endl;
std::cout << "directory\t" << &cmdoptions1.directory << std::endl;
}
检查其中的断言起源。你登陆到调试器。用它! – sehe
是的,我按下重试后,我显示它停在desc..add_options。不清楚为什么这是一个问题。 –
好吧,你得到了你打破断点的窗口。只需使用中断按钮并进行调查。你正在使用boost程序选项错误.... visual studio应该指出你在哪里以及如何 – Hayt