VS2019+PCL1.12.1+Qt5.14.2编译VTK9.1(苦尽甘来系列)

本文详细记录了如何从源码编译VTK9.1并用于Qt项目中显示点云的过程,包括CMAKE配置、解决VS报错、更新PCL库中VTK依赖等步骤,最终成功创建QVTKOpenGLNativeWidget展示点云。

花了两天时间编译VTK9.1,然后通过VS所创建的Qt项目来显示点云。

根本目的

VS创建Qt项目,在ui设计界面中添加一个widget,用于显示点云。

正文

安装PCL过程中本身也会安装VTK,但是这个VTK不是最全的,所以就需要下载VTK的源码编译后对PCL中的VTK进行补充。说到这里,有必要放一个VTK源码下载链接,点击可以选择想要的版本进行下载。
在这里插入图片描述
因为PCL1.12.1中的VTK是9.1版本,所以最好下载VTK9.1.0进行编译。

下载之后需要用CMAKE-gui,本次所用的版本是3.24.0,点击这里去官网下载CMAKE
在这里插入图片描述
编译VTK的教程很多,看的有点眼花缭乱,都尝试过。主要按照这个教程编译成功了VTK9.1。

值得注意的是,这些路径都是需要改的,默认的路径是Qt/5.14.2/mingw73_64/bin/xxx.exe,乍一看好像跟下图中的一模一样,之前一直没改,configure也能成功,后面用VS2019生成时老出错,后面发现原来mingw73_64改成msvc2017_64或者msvc2019_64,本人的是msvc2017_64,教程没问题,真的需要细心。
在这里插入图片描述
这个教程中提到,要C++桌面开发和.net SDK,MFC好像是VTK的一个依赖库。
在这里插入图片描述
如果目前VS2019中还没有安装,可以点击 工具->获取工具和功能,就会跳出Visual Studio Installer,选择单个组件就可以完成MFC和.net SDK的安装了。那到底安装哪个版本的MFC,请参考教程1教程2。

编译结束之后,一般得到一个debug版本的VTK和一个release版本的VTK。每个版本都有下图所示的4个文件夹。
在这里插入图片描述
很多教程中提到,要把编译之后得到的QVTKWidgetPlugin.dll、QVTKWidgetPlugin.exp和QVTKWidgetPlugin.lib这三个文件扔到Qt的某个文件夹中。可问题是,本人编译之后并没有得到,整个文件夹搜索也没有搜索到。后面看了很多帖子才知道,VTK9.1.0是不会产生这三个文件的,老的版本好像是可以。看此处了解详情。
在这里插入图片描述
那么得到VTK的debug和release版本后,需要用来对之前所安装的PCL1.12.1库中的VTK进行完善。这个帖子中说了要把哪些文件给提取出来。
在这里插入图片描述
这个帖子更直接,直接给出了编译好的VTK库,直接拿来替换掉PCL1.12.1中的VTK就可以了,极快。
在这里插入图片描述
真的感激,这个博主是好人。

当PCL库中的VTK被更新之后,是否可以用了呢?不是,在这一步卡了一天。也没有查到有人说的很明白。其实路径啥的都不需要再改了。但是就是会报错,报的错误是无法解析的外部命令,如下图所示。
在这里插入图片描述
后面终于发现,PCL库在没更新之前,关于VTK的外部依赖项有130个,更新之后有144项。只需要打开VS 链接器->输入->附加依赖项,将多出来的十几项加进去就好了。其实多出来的这些.lib就是我们编译VTK所需要的东西。这里直接给出来debug下这144个.lib文件名。直接覆盖掉之前那130个即可,release版本的需要把每个.lib文件名的d去掉,即XXX-9.1d.lib改成XXX-9.1.lib即可。

vtkcgns-9.1d.lib
vtkChartsCore-9.1d.lib
vtkCommonColor-9.1d.lib
vtkCommonComputationalGeometry-9.1d.lib
vtkCommonCore-9.1d.lib
vtkCommonDataModel-9.1d.lib
vtkCommonExecutionModel-9.1d.lib
vtkCommonMath-9.1d.lib
vtkCommonMisc-9.1d.lib
vtkCommonSystem-9.1d.lib
vtkCommonTransforms-9.1d.lib
vtkDICOMParser-9.1d.lib
vtkDomainsChemistry-9.1d.lib
vtkDomainsChemistryOpenGL2-9.1d.lib
vtkdoubleconversion-9.1d.lib
vtkexodusII-9.1d.lib
vtkexpat-9.1d.lib
vtkFiltersAMR-9.1d.lib
vtkFiltersCore-9.1d.lib
vtkFiltersExtraction-9.1d.lib
vtkFiltersFlowPaths-9.1d.lib
vtkFiltersGeneral-9.1d.lib
vtkFiltersGeneric-
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值