PCL可视化vtkRenderingOpenGL问题

文章目录

  • 一、问题描述
  • 二、问题解决方法

一、问题描述

我使用的pcl版本是pcl1.8.0,而在使用PCL可视化中的PCLVisualizer类时,出现了下面的问题:
PCL可视化vtkRenderingOpenGL问题_第1张图片
因为对于PCL我也是个小白,所以感觉这错的莫名其妙啊。所以我就去网上搜索了一下,网上说是添加下面的这几行代码就可以了。

#include 
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);

然后我就添加了这几行代码,可是又出现了下面的问题:

严重性	代码	说明	项目	文件	行	禁止显示状态错误	LNK2019	无法解析的外部符号
 "void __cdecl vtkRenderingOpenGL_AutoInit_Destruct(void)" 
 (?vtkRenderingOpenGL_AutoInit_Destruct@@YAXXZ),该符号在函数 "public: __cdecl 
 vtkRenderingOpenGL_ModuleInit::~vtkRenderingOpenGL_ModuleInit(void)" 
 (??1vtkRenderingOpenGL_ModuleInit@@QEAA@XZ) 中被引用	cloud_viewer

没有办法只能再去搜索去了,就看到有的博主说可以将下面这行代码修改就可以了。

VTK_MODULE_INIT(vtkRenderingOpenGL);

修改为:

VTK_MODULE_INIT(vtkRenderingOpenGL2);

于是,我就试了一下,倒是真的能运行了,但是又出现了了新的问题。

当我使用鼠标进行点云的缩放时,程序就会突然的崩溃,说是PCL中的一个vtkRenderingOpenGL2-8.0.dll文件在执行时出现了异常,内存访问冲突。

在问题一个接一个的出现之后,终于走到了最后一个问题的面前,不容易啊。

二、问题解决方法

又到网上搜索了一圈之后,我大概能够确定了问题就出在vtkRenderingOpenGL2-8.0.dll这个文件中了,那就没啥好的办法了只能重新编译VTK8.0了。具体的步骤可以看:QT配置PCL过程记录(一)和QT配置PCL过程记录(二)。
不过在重新编译的过程中我们要注意的是下面的这个选项:
PCL可视化vtkRenderingOpenGL问题_第2张图片
这个选项会决定你之后生成的文件时vtkRenderingOpenGL-8.0.dll还是vtkRenderingOpenGL2-8.0.dll,不过这倒也无所谓对后面也没有太大的影响。
通过cmke生成项目之后,按部就班的先生成Debug版本的lib文件,现在就要注意一下,你生成路径中bin文件夹下的dll文件了。
PCL可视化vtkRenderingOpenGL问题_第3张图片
如果你再生成Release版的lib文件,则你的bin文件夹下就会生成相应的Release版的dll文件,它会覆盖你之前的Debug版的dll文件,所以我建议可以先复制Debug版的dll文件做个备份。
PCL可视化vtkRenderingOpenGL问题_第4张图片

注意:一定要根据你的版本来选择Debug版的dll文件或是Release版的dll文件,否则运行还是会失败的。我就是踩了这个坑所以耽误了我很多的时间,难受啊,所以一定要注意这一点。

你可能感兴趣的:(PCL)