QT+PCL+VTK 程序生成成功,但是会出现未加载符号文件的错误,访问冲突

我按照网上配置了VS2019+QT5.14.2+PCL1.11.1+VTK8.2.0,想要通过vs把pcl可视化嵌入到QT中,环境变量,包好目录,库目录,依赖项,SDL检查,预处理器定义都可以保证没有问题(配置过好几次了),生成调试程序时也没有问题,但是会出现如下错误:

img

请问是什么原因??
下面是我的代码:

img

img

img

  • 以下回答由chatgpt基于相关博客总结生成:

    对于未加载符号文件的错误,可能是由于缺少相应的库文件或者库文件不匹配导致的。可以尝试重新检查库文件和配置是否正确,并注意库文件的版本是否与使用的程序版本匹配。

    对于访问冲突的问题,可能是由于多个模块同时访问同一个资源导致的。可以尝试检查代码中是否存在这种情况,并使用线程锁等方式解决访问冲突的问题。

    关于将pcl可视化嵌入到QT中,需要进行一些额外的配置。可以参考以下步骤:

    1.添加pcl可视化库文件的头文件和链接库,可以在.pro文件中添加如下代码:

    INCLUDEPATH += your_pcl_visualization_include_directory LIBS += -Lyour_lib_directory -lPCL_Visualization

    2.在QT中创建一个QWidget控件,并设置它的大小和布局。

    3.在QWidget控件中添加一个QVTKWidget控件,在这个控件中可以实现pcl的可视化。

    4.在QWidget控件中实现要显示的pcl数据的处理,并将处理后的数据传递给QVTKWidget控件进行可视化。可以参考以下代码:

    void PCLViewer::visualize() { pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));

    viewer->setBackgroundColor(0, 0, 0); viewer->addPointCloud(cloud, "sample cloud"); viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");

    ui->qvtkWidget->SetRenderWindow(viewer->getRenderWindow()); viewer->setupInteractor(ui->qvtkWidget->GetInteractor(), ui->qvtkWidget->GetRenderWindow()); ui->qvtkWidget->update();

    while (!viewer->wasStopped()) { viewer->spinOnce(100); std::this_thread::sleep_for(std::chrono::milliseconds(100)); } }

    需要注意的是,如果程序有多个线程,需要使用线程锁等方式保护数据访问,以免出现访问冲突等问题。