本人,一个点云newbie,看了《点云库PCL从入门到精通》第五章,qt的相关内容,发现书中说的对新手很不友好。
在解决了好几天bug之后,写下这篇newbie教程。
配置环境:
VS2017_x64,VTK8.0.0,QT5.13.0,Qt Creator4.9.1,cmake3.10.2
目标:
实现VS、VTK、QT的联合使用,并且把书里的代码跑通
过程:
1.安装PCL
- 安装的时候注意PCL路径中不要出现空格,默认安装路径是有空格的
- 安装后,记得去电脑上增加PCL的环境变量
添加环境变量PCL_ROOT
C:\Program Files\PCL 1.8.0
在PATH环境变量下添加
C:\Program Files\OpenNI\Bin;
%PCL_ROOT%\bin;
%PCL_ROOT%\3rdParty\FLANN\bin;
%PCL_ROOT%\3rdParty\Qhull\bin;
2.安装cmake
- 注意版本问题
我安装的是cmake3.10.2
一开始安装的是比较新的一个版本,但是那个版本中的VS2017没有64位的版本,也就是跟我电脑中安装的VS不兼容,cmake无法运行,所以换了比较旧的版本就可以了。
3.用cmake安装VTK
- 需要按照书上的注意事项对编译时的VTK进行勾选
- 我就是在这一步埋下了bug的伏笔
- 如果不想自己编译VTK的话,就去csdn的资源博客上下载别人编译好的VTK
我用的是这位博主的资源
https://blog.csdn.net/HB_Programmer/article/details/92836303
虽然配置有些和我不一样,但是确实能用,解决了我的大bug
(也就是QVtkWidgetPlugin.dll无法识别,找不到头文件QVtkWidget.h)
4.安装qt和插件
- 网上没有找到只安装qt designer的办法。只能够安装Qt的时候安装QtCreator
- 把QVTkWidgetPlugin.dll放到QtCreator的plugin/designer中会发现无法读取。
stackoverflow上说,需要和QtCreator的关于中所提到的配置一样的电脑编译的QVTkWidgetPlugin.dll才能被识别。
但是QtCreator的32位和64位是同一个安装包,安装下来就是32位,我的vs是64位。在网上没找到这个配置的dll下载,此题无解。如果大家有这个配置的dll,麻烦发我一份。
5.跑项目
-
遇到的第一个bug就是VS会报错找不到过程文件ui_pclvisualizer中的头文件:
报错原因有三点
1.pcl的安装位置没有配置到环境变量中2.是qt4和qt5的头文件发生了一些比较大的变化,具体的写法我会上传到我的csdn资源里面。
https://download.csdn.net/download/sparkleyn/11463567 -
遇到的第二个报错就是“找不到头文件QVtkWidget.h”
具体原因是因为当初VTK没编译好,全网都没找到解决方案,在这个博客的帮助下解决了,实名感谢(o゜▽゜)o☆
https://blog.csdn.net/HB_Programmer/article/details/92836303 -
遇到的第三个事情是,我在尝试解决bug的时候在VS中安装了vs qt tools
如果在VS-tools中下载这个插件,会发现,这个插件下载之后没法儿用。
是因为版本太高了。这个时候就要去网上下载低版本,并且取消掉vs-tools里面的自动更新才可以用。
6.还没有解决的问题
QtCreator上还是没有识别到QVtkWidgetPlugin.dll,我的QtCreator是msvc2017,32bit,希望大家有这个版本的dll发我一份,感激不尽。