PCL可视化vtkRenderingOpenGL问题

一、问题描述

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

#include <vtkAutoInit.h>
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过程记录(二)
不过在重新编译的过程中我们要注意的是下面的这个选项:
在这里插入图片描述
这个选项会决定你之后生成的文件时vtkRenderingOpenGL-8.0.dll还是vtkRenderingOpenGL2-8.0.dll,不过这倒也无所谓对后面也没有太大的影响。
通过cmke生成项目之后,按部就班的先生成Debug版本的lib文件,现在就要注意一下,你生成路径中bin文件夹下的dll文件了。
在这里插入图片描述
如果你再生成Release版的lib文件,则你的bin文件夹下就会生成相应的Release版的dll文件,它会覆盖你之前的Debug版的dll文件,所以我建议可以先复制Debug版的dll文件做个备份。
在这里插入图片描述

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

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼BIGFISH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值