C++ QVTKWidget SetRenderWindow()带有PCLVisualizer异常

C++ QVTKWidget SetRenderWindow()带有PCLVisualizer异常,c++,qt,vtk,point-cloud-library,C++,Qt,Vtk,Point Cloud Library,我是PCL的新手。我想用PCL和VTK int Qt 5.9.6 MSVC 2017 64位环境构建一个项目 我的代码如下: // include file boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer; 可以对其进行编译,但当我开始调试时,警报出现错误: 次品停止,因为它触发了异常。 在线程0中停止的原因:0x7ffcb50b1f28处出现异常,代码:0xc0000005:0x25处出现读取访问冲突,标志

我是PCL的新手。我想用PCL和VTK int Qt 5.9.6 MSVC 2017 64位环境构建一个项目

我的代码如下:

// include file
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
可以对其进行编译,但当我开始调试时,警报出现错误:


次品停止,因为它触发了异常。
在线程0中停止的原因:0x7ffcb50b1f28处出现异常,代码:0xc0000005:0x25处出现读取访问冲突,标志=0x0(第一次机会)。

并在第
ui->qvtkWidget->SetRenderWindow(viewer->getRenderWindow())行停止

在跟踪和调试之后,我发现问题在于
viewer->getRenderWindow()->getinteractior()
获取0x25值,我不知道这是怎么发生的,因为很多在线示例都使用这样的代码。同样的程序在ubuntu 18.04上运行正常


谢谢你的提示。

最后,我发现这是由VTK版本引起的问题。原版本为8.1.1,切换到8.0.1可以正常运行。但我不知道为什么它仍然可以在Linux 8.1.1中正常调试。

PCL Visualizer在提供之前没有自己的窗口。我猜
viewer->getRenderWindow()
返回的值无效或为空。@AlexanderV实际上,
viewer->getRenderWindow()
是有效的,我可以使用它的函数,比如
viewer->getRenderWindow()->GetPosition()
,但是
viewer->getRenderWindow()->getinteractitor()的指针
始终指向奇怪的地址
0x25
// source code file
viewer.reset(new pcl:visualization::PCLVisualizer("viewer", false));
ui->qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
viewer->setupInteractor(ui->qvtkWidget->GetInteractor(), ui->qvtkWidget- >GetRenderWindow());