在 Cygwin 下使用 Boost 程序选项挂起
我一直在将 C++ 程序从 Linux 移植到 Windows 上的 Cygwin,但在使用 Boost 程序选项 (Boost 1.43) 时遇到了问题。该程序在 Linux (Boost 1.44) 上编译并运行良好,但在 Cygwin 下挂起:
/* prints */
std::cout << "positional options" << std::endl;
variables_map v;
store(command_line_parser(argc, argv)
.options(o).positional(p).allow_unregistered().run(), v);
/* never prints */
std::cout << "stored vars" << std::endl;
notify(v);
有什么想法吗?如果需要,我可以提供更多信息。 (如果我不得不猜测的话,它是 I/O 被阻塞的,因为这里的 CPU 使用率为 0%)
I've been porting a C++ program from Linux to Cygwin on Windows, and am having trouble with Boost Program Options (Boost 1.43). The program compiles and runs fine on Linux (Boost 1.44), but hangs under Cygwin:
/* prints */
std::cout << "positional options" << std::endl;
variables_map v;
store(command_line_parser(argc, argv)
.options(o).positional(p).allow_unregistered().run(), v);
/* never prints */
std::cout << "stored vars" << std::endl;
notify(v);
Any ideas? I can provide more information if needed.
(If I had to guess, it's I/O blocked, as the CPU use sits at 0% here)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我是你,我会使用 GDB 来完成它。
但有一点警告:无论黑客多么聪明,有些东西就是无法有效地移植到 linux->cygwin。在某个时刻,您需要问自己,在 Windows 上重写所有内容是否真的可以节省时间。
If I were you, I would go through it using GDB.
A word of warning though: Some things just can't be efficiently ported linux->cygwin, no matter how clever the hacking is. At a certain point, you need to ask yourself if it would actually save time to just rewrite it all on Windows.