VS2017、QT5.12.1环境下的VTK8.0编译过程记录

本文介绍如何解决PCL1.8.1中VTK缺失QVTKWidgetPlugin.dll的问题,通过从源码编译VTK并生成所需插件,最终实现在QT界面上显示点云的功能。

想要在QT界面上显示点云,但PCL 1.8.1的自带VTK里缺少QVTKWidgetPlugin.dll插件,故需要重新编译下。

1. vtk源source

链接:https://pan.baidu.com/s/10kMCNJ-5UiYqRTOvrlrR9A 
提取码:ug7p 
2. 打开cmake,目录如下配置,build文件夹是自己在D:/vtk-v8.0.0目录下新建的

3.点击左下角的configure按钮

等待一段时间后,出现如下界面

Build选项勾选如下三个

CMake选项中的CMAKE_INSTALL_PREFIX设置为如下路径,即后面运行编译好的解决方案里install工程时,类似于pcl自带的vtk那种目录结构就会生成在这里面

VTK选项里如下得勾选上

再次点击Configure,配置完后报如下错误

如下发红位置处两行修改为如下:

再次点击左下角的configure按钮,结束完毕后再次按如下配置Ungrouped Entries

再次点击Configure,不再报错

点击Generate,生成工程

然后再点击Open project按钮用vs2017打开解决方案

检查下环境,当前我的是debug, x64

然后点击生成ALL_BUILD工程,时间会持续好长一段时间。

结束时发现1个报错信息

是由于在下载过程中有些文件没有及时download下来

1>-- [download 83% complete]
1>-- [download 84% complete]
1>CMake Error at D:/vtk-v8.0.0/CMake/ExternalData.cmake:1005 (message):
1>  Object MD5=9e68ff1b1cc914ed88cd84f6a8235021 not found at:
1>
1>    http://midas3.kitware.com/midas/api/rest?method=midas.bitstream.download&checksum=9e68ff1b1cc914ed88cd84f6a8235021&algorithm=MD5 ("HTTP response code said error")
1>    http://www.vtk.org/files/ExternalData/MD5/9e68ff1b1cc914ed88cd84f6a8235021 ("Timeout was reached")
1>Call Stack (most recent call first):
1>  D:/vtk-v8.0.0/CMake/ExternalData.cmake:1027 (_ExternalData_download_object)
1>
1>

到该目录下D:\vtk-v8.0.0\build\ExternalData\Objects\MD5发现才下了部分文件

这边我上传一份,解压后替换该文件夹MD5即可

链接:https://pan.baidu.com/s/1GItTKoBPeiil20RXgMwyYg 
提取码:k4tz 
 

然后再生成下ALL_BUILD工程

成功后再仅生成下INSTALL工程

然后去C盘的目录下C:\VTK,查看此文件夹

和pcl1.8.1里面自带的vtk结构类似。多了一个plugins文件夹,然后将此文件夹替换pcl1.8.1里面的如下文件夹即可

由于pcl1.8.1自带的vtk的debug版本含有-gd关键字,可以用如下python脚本修改文件名

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:jiugeshao
import os
import sys

filepath= r'C:/VTK/lib'
fileList = os.listdir(filepath)
currentpath = os.getcwd()
os.chdir(filepath)

for fileName in fileList:
    result = "lib" in fileName
    if(result):
      os.rename(fileName,fileName.replace(".lib","-gd.lib"))

os.chdir(currentpath)

修改后文件夹里的lib名字格式如下:

工程切换到Release x64下再进行编译ALL_BUILD,编译完毕后,记得编译INSTALL

可以跑下例子QtVTKRenderWindows工程

在debug下跑时,报错

在release下跑时报错无法定位程序输入点vtkGUISupportQt-8.0.dll

此时注意下环境变量那边,因为安装QT时我同时安装了32bit和64bit两个版本,所以我把bin和lib都添加到了环境变量里。

同时要注意这四个路径放在最上方(环境变量里可以排序)

在debug模式下运行QtVTKRenderWindows工程,界面可以show出来,但是vtkoutputWindow中有报错信息

Either a filename was not specified or the specified directory does not contain any DICOM images.

我这里上传一份DICOM图

我放在D:\\ct文件夹下

链接:https://pan.baidu.com/s/1adDaWCQaTwgnLVARf2nQkg 
提取码:h793 
然后打开QtVTKRenderingWindows.cxx文件,如下方式修改

这样在debug和release模式下都能显示如下的界面:

我编译好后的debug版本和release版本vtk见百度网盘

链接:https://pan.baidu.com/s/199YssGsprlm99zkuI5eM3g 
提取码:3ip5 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

竹叶青lvye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值