朱永博 2023-10-23 09:34 采纳率: 50%
浏览 31
已结题

Qt可视化PCL点云debug模式报错

Qt版本6.2.4,Vtk版本为9.2.2,Release正常编译运行,为何Debug模式编译通过,运行报错。
以下是源码:
//QtWidgetsApplication1.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/histogram_visualizer.h>
#include <pcl/visualization/pcl_plotter.h>
class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT
public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();
private:
    Ui::QtWidgetsApplication1Class ui;
    std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> cloud_vec;
    std::vector<int> cloud_index;
    pcl::PointCloud<pcl::PointXYZ> cloud;
    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
    int point_size = 3;
private slots:
    void on_pushButton_clicked();//读取点云
};
//QtWidgetsApplication1.cpp
#include "QtWidgetsApplication1.h"
using namespace std;
QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui.qvtkWidget->setRenderWindow(window.Get());
    ui.qvtkWidget->update();
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{}
void QtWidgetsApplication1::on_pushButton_clicked()
{
    if (pcl::io::loadPCDFile<pcl::PointXYZ>("bunny.pcd", cloud) == -1) //* load the file
    {
        qDebug() << "Couldn't read pcd file  \n";
        return;
    }
    int size = static_cast<int>(cloud.size());
    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui.qvtkWidget->setRenderWindow(window.Get());

    viewer->addPointCloud<pcl::PointXYZ>(cloud.makeShared(), std::to_string(cloud_vec.size() - 1));
    //设置点云大小
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, std::to_string(cloud_vec.size() - 1));
    viewer->resetCamera();
    ui.qvtkWidget->update();
}
运行结果及详细报错内容

img

调试信息显示缺少Vtk相关的Pdb文件,可是编译成功的Vtk本身就没有对应的VtkChartsCore-9.2d.pdb等文件,求解答?
  • 写回答

17条回答 默认 最新

  • bug菌¹ Java领域优质创作者 2023-10-23 19:46
    关注
    获得0.75元问题酬金

    该回答引用ChatGPT,望对题主有所帮助/启发;若有帮助,还望采纳。


    从您提供的信息来看,这个问题可能是因为 Debug 模式下运行时缺少相应的 PDB 文件,而该 PDB 文件是用于在 Debug 模式下进行调试的,用来存储程序调试的相关信息。这是一种在 Windows 平台下的调试信息文件格式。

    解决这个问题,通常有以下几种可能的方式:

    1. 重新编译 VTK 库:一般来说,当我们用源码编译一个库时,编译工具(例如 CMake 和 Visual Studio)会自动为我们生成相应的 PDB 文件。因此,您可以尝试用源码重新编译一下 VTK,确保在编译选项中开启了生成 PDB 文件的选项。这通常在编译工具的设置中可以找到。

    2. 确保 PDB 文件和 DLL 文件在同一个目录:假设您的 VTK DLL 文件和 PDB 文件并非在同一个位置,那么在 Debug 时,您需要把 PDB 文件复制到 DLL 文件所在的目录,或者在项目设置中指定额外的 PDB 文件搜索路径。

    3. 忽略 PDB 错误:如果上述方法都不能解决问题,或者您只是想简单地运行程序而不进行调试,那么可以在项目设置中关闭 "Enable Just My Code" 选项并在 "Symbols" 设置中取消 "Microsoft Symbol Servers"。这样,Visual Studio 就不会在找不到 PDB 文件时停止运行。

    4. 使用 Release 模式调试:如果您的程序在 Release 模式下能够正常运行,那么您可以尝试使用 "Debug -> Start Without Debugging" (Ctrl + F5) 来启动程序。尽管这样无法进行逐行调试,但至少能让您看到程序的运行结果。

    请尝试以上建议看是否能解决你的问题。如果问题仍然存在,希望您能提供更多关于错误信息的详情,有助于我们更好地帮助您解决问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀