【发布时间】:2016-11-08 10:08:42
【问题描述】:
我有问题。我在 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;
}
【问题讨论】:
-
检查断言的来源。您已进入调试器。使用它!
-
是的,我在按下重试后显示它在 desc..add_options 处停止的位置。不清楚为什么这是个问题。
-
那么你得到了你遇到断点的窗口。只需使用中断按钮并进行调查。您使用错误的 boost 程序选项....visual studio 应该指出您在哪里以及如何
标签: c++ visual-c++ boost