【发布时间】:2015-02-15 03:54:31
【问题描述】:
我有一个 QT C++ 应用程序,它调用一个非 QT 函数,该函数运行基于此示例 http://pointclouds.org/documentation/tutorials/interactive_icp.php 的 PCL 代码。一切正常,但是当 PCL 代码完成时(PCLVisualizer 关闭并返回 QT 代码),QT 应用程序会自动退出。
我检查了导致此错误的指令,结果是对PCLVisualizer::spineOnce() 的调用。如果我评论这一行,PCL 可视化器不会正确显示,但点云操作运行正常,并且当计算完成时 QT 不会崩溃。
我想知道为什么对PCLVisualizer::spineOnce() 的调用会导致这种行为?如果我在 PCL 代码中调用此类函数,为什么我的 QT 应用程序会崩溃?
这是从 QT SLOT 函数调用 PCL 函数
void face_processing_GUI::runAlignment()
{
icp::run_icp(target, source);
}
而 PCL icp::run_icp(string, string) 函数可以这么简单
int icp::run_icp(std::string in_target, std::string in_source)
{
pcl::visualization::PCLVisualizer * viewer = new pcl::visualization::PCLVisualizer("ICP stage");
viewer->spinOnce(); // If I comment this time it does NOT crash
viewer->close();
delete viewer;
}
【问题讨论】:
-
它退出和/或崩溃了吗?如果是崩溃,回溯说什么?
-
我不认为是崩溃,调试模式的输出在这里pastebin.com/9JkcuaTU