1、下载
本教程使用的版本:vs2022+qt5.9.9+vtk8.1.0+pcl1.9.0+cmake3.26.1
!!!特别注意:请读者务必保证vtk与pcl中的vtk版本一致(如pcl1.9.1对应vtk8.1.0 pcl1.8.1对应vtk8.0.0),不然最后会报错,博主已经踩过这个坑,vtk8.2.0与pcl1.9.0不匹配,会报以下错误:0x00007FFCAED85E08 (ucrtbased.dll)处(位于 cowapp.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000035 时发生访问冲突。。
这里给出vtk8.1.0以及pcl1.9.0的程序包,vs以及qt还有cmake可以去官网下载,或者去其他博客寻找网盘版
vtk8.1.0:
链接:百度网盘 请输入提取码
提取码:bkqy
pcl1.9.0
链接:https://pan.baidu.com/s/1lDhAwdo58VvxqiqHIfPceg
提取码:s539
2、安装
作者很久以前就安装了,过程已不记得,可以去参考其他博客。其实vtk与pcl不用安装,直接下载下来解压,之后配置进vs项目即可。所以只需要安装vs、Qt、cmake(编译vtk)。
3、配置
3.1 cmake编译vtk
首先在c盘(选择你自己空间大的盘)下新建一个文件夹,命名为vtk,然后在该vtk文件夹下新建五个文件夹,如图所示:
请将你解压后的vtk包剪切进vtk_src里面,如图:
以管理员方式打开cmake(避免出错,尽量用管理员方式打开),如图所示。其中源vtk路径是CMakeLists.txt所在的路径。这里作者换在了new_vtk文件夹下,因为作者的vtk文件夹下都是编译好的,不想破坏,就新建了一个给大家演示
进入以下界面:
点击完成,开始编译,等待大约半个小时
编译完后,出现红色,这个需要我们去配置一些会用的东西,主要勾选有:
BUILD下:一定选择BUILD_TESTING,不然后面vs生成可能会报错
CMAKE下:重新选择路径如下
选择完后,再次点击configure,等待完成
这次再一次出现红色,不用怕,这是要我们配置Qt,因为我们在上一步勾选了Qt
在Ungrouped Entries下将Qt5配置好
在VTK下设置Qt版本为5
配置完后,继续点击configure,等完成后,不会出现红色。
最后点击Generate即可完成
以管理员方式打开vtk_build下的VTK.sln到vs2022中,右击ALL_BUILD,点击生成,过程比较慢,需要1~2小时,这个生成需要在debug与release下各执行一次
然后选择debug模式,右击INSTALL,点击生成:
生成完之后全都放在vtk_res下,此时,将vtk_res下的所有内容都剪切到vtk_debug文件夹下
然后,在vs中选择release模式,继续生成INSTALL。将生成后的全复制到vtk_release文件夹下
到此,完成vtk编译。
3.2测试vtk是否编译成功
用vs打开vtk_build下的VTK.sln,点击解决方案资源管理器,右击Cube,设置为启动项目,然后运行Cube.cxx,效果如下
说明vtk编译成功!!!
4、新建Qt项目,配置pcl,vtk
Qt安装不需要过多解释,不过还需要在vs中配置Qt
Qt下载安装以及vs2022中配置Qt可以参考一下博客:C++图形化界面框架Qt的下载与安装,vs中安装并使用Qt插件_c++ qt下载_ych什么都不会的博客-CSDN博客
新建一个如下的Qt项目
下面的步骤默认即可
在项目的属性管理器中,在debugx64下新建一个名为vtk_debug属性表,将vtk_debug文件夹下bin目录配置进环境变量,include目录配置进包含目录,lib配置进库目录,将lib下所有文件名复制进连接器下的附加依赖项,完成!
在releasex64下新建一个vtk_release属性表,将vtk_release文件夹下bin,目录配置进环境变量,include目录配置进包含目录,lib配置进库目录,将lib下所有文件名复制进连接器下的附加依赖项,完成!
注意:vtk_release与vtk_debug下的bin只能有一个配置进全局变量,如果两个同时配置进全局变量,则后面的bin没有作用
至此,vtk在Qt中配置完成!!!
pcl配置进Qt项目读者请参考其他博客,就是在debugx64与releasex64下分别新建pcl_debug与pcl_release属性表,然后分别配置包含目录、库目录、附加依赖项即可。
pcl配置过程中出现了问题,可以参考这篇博客:
c++安装PCL库的下载以及运行存在的一系列问题解答_c++ pcl库_ych什么都不会的博客-CSDN博客
注意:pcl中的vtk不用改动,因为pcl1.9.0中的vtk为8.1.0,与Qt中配置的vtk版本一致
然后需要在Qt的ui界面中配置vtkWidget控件,如下:
1、把C:\VTK\vtk_build\lib\Release下的QVTKWidgetPlugin.exp、QVTKWidgetPlugin.lib,C:\VTK\vtk_build\bin\Release下的QVTKWidgetPlugin.dll复制进C:\Qt\Qt5.9.9\5.9.9\msvc2017_64\plugins\designer
此时,在Qt的ui界面中就可以添加vtk控件
在Qt项目中添加vtk控件后,必须在Qt框架代码中添加如下代码:
#include
#include
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
到此为止,你的Qt项目中配置了vtk、pcl,已经可以成功运行,效果如下(这是博主做好的一个成品):
有问题可以留言!