win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)

目录

  • 前言
  • 一、安装Visual Studio2017
    • 1)官网下载可执行的安装程序
    • 2)安装
    • 3)启动
  • 二、安装Qt 5.9.9
    • 1)下载可执行的安装程序
    • 2)安装
    • 3)配置环境变量
  • 三、安装Cmake
    • 1)下载可执行的安装程序
    • 2)安装
  • 四、VTK的下载、配置、生成
    • 1)下载VTK
    • 2)VTK的配置、生成
  • 五、将VTK与Qt连接起来
    • 1)在Qt的designer中加入VTK控件
    • 2)在Visual Studio 2017中引入Qt
    • 3)在Visual Studio 2017中引入VTK
  • 六、结束语


前言

作为一个只浅学过C语言和C++的纯小白,在编译VTK(visualization toolkit)并与Qt结合的过程中遇到了很多问题,零零碎碎也看了许多文章教程,但由于版本兼容、过程不完整等问题走了许多弯路,最后东拼西凑勉强完成,故写下这篇文章供大家参考。
本文主要目的是安装vs2017,Qt,Cmake以及VTK,并使Qt和VTK均可以在vs2017中使用。

一、安装Visual Studio2017

1)官网下载可执行的安装程序

首先,到Visual Studio官网(www.visualstudio.com)下载安装工具。
在这里插入图片描述


在搜索栏处搜索就能找到包括2017等以前版本
附直达网址:较古老版本——https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/


2)安装

VS 2017 下载完成后,双击下载好的可执行文件即可进入安装界面:

1、点击 “继续” 按钮,此时会弹出一个进度条:

在这里插入图片描述

2、等进度条完成后,会直接跳到下面的页面:
在这里插入图片描述

3、选择工作负载、组件,确定安装位置:
我们只需要安装 “使用C++ 的桌面开发” 即可,其他如有需要可自行安装;
同时在这个页面,还可以选择 VS 2017 的存储位置;
然后直接点击安装,此过程可能需要一段时间,请耐心等待。
在这里插入图片描述

4、安装完成:
VS 2017 会要求重启计算机,按要求重启即可。
安装成功后,首次使用 VS 2017 还需要对其进行简单的配置,包括开发环境和软件本身的主题风格。
启动Visual Studio 2017,会提示让你登陆,可以登录、注册,当然直接略过也可。
在这里插入图片描述

3)启动

接下来选择配置开发环境:
在这里插入图片描述

我们使用主要进行的是 C/C++ 程序开发,所以选择 “Visual C++” 这个选项,至于颜色主题选个顺眼的就行,然后点击 “启动 Visual Studio” 按钮。
在这里插入图片描述
最后,再等待几分钟的准备过程启动就成功啦!


二、安装Qt 5.9.9

1)下载可执行的安装程序

同样先在Qt中文官网(https://www.qt.io/zh-cn/)下载安装工具。
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

附直达地址:Qt Download—— https://download.qt.io/archive/qt/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Qt5.9是长期支持版,会在较长的时间内获得安全、维护和(有时有)功能的更新,因此我们选择5.9.9


2)安装

双击下载好的可执行文件即可进入安装界面:

1、点击”Next“
在这里插入图片描述

2、登录账号,没有的话去官网注册一个即可
在这里插入图片描述

3、选择安装位置
注意,安装路径不能带空格、中文字符或者其它任何特殊字符,Qt的任何相关路径都不能出现中文
在这里插入图片描述

4、选择需要的组件
QT中有很多的组件,抱歉我不是很懂,所以我把我觉得可能有用都下载了,我们要使用vs2017所以其中MSVC 2017 64-bit是必要的,其他的组件大家可以按照需求下载。但是选择组件较多时,会占用比较大的内存,如果你的内存不够,最好还是多查一查。以下是我的选择。
在这里插入图片描述
5、接着选择”下一步“,”下一步“就完成了


3)配置环境变量

1、右击计算机—属性,点击高级系统设置—环境变量
在这里插入图片描述

2、接下来点开系统变量中的Path,点击”新建“,输入Qt安装所在路径下的msvc2017_64\bin文件夹,然后确定如果你曾经为python配置过环境,一定要点击”上移“将Qt的路径移动到python的路径上方
在这里插入图片描述
完成以上内容,Qt便安装完成了!


三、安装Cmake

1)下载可执行的安装程序

在官网下载安装程序
直达网址:Cmake Download——https://cmake.org/download/
进入Cmake下载网页后,我们选择最新的3.25.1版本,在文件列表中我们选择最便于安装的msi(环境:Windows 64位),如下图所示。
在这里插入图片描述


2)安装

下载完成后双击进行安装
在这里插入图片描述
1、欢迎界面,点击“Next”
(因为下载完成后有些下载页面就无法打开了,因此借用了一些别人的图片)

在这里插入图片描述

2.同意协议,点击“Next”
在这里插入图片描述

3、选择第二个选项安装程序会将文件目录添加至所有用户的系统环境变量中,点击“Next”
在这里插入图片描述

4、选择安装目录小提示:这个软件不大只有100MB左右,点击“Next”
在这里插入图片描述

5、点击“Install”,等进度条走完便安装完成了
(因为之前选择了自动添加到系统变量for all users,因此我们不需要再手动配置环境)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、VTK的下载、配置、生成

1)下载VTK

直达地址:VTK官网——https://www.vtk.org/download/

1、我们选择8.2.0版本,下载VTK-8.2.0.zip,如下图所示:
(.zip是window系统的,.tar.gz是Linux系统的,不知为何最新的9.2.5没有ZIP)
 VTKData和VTKLargeData都是官方示例程序中的数据,如有需要可自行下载。
在这里插入图片描述
2、创建一个目录(最好不要在C盘),命名为VTK,在其中新建五个目录,分别命名为vtk_src、vtk_bin、vtk_res、vtk_debug、vtk_release,操作完成的结果如下图所示:
(scr存放的是解压后的vtk文件;bin存放的是编译出来的项目文件;res作为中转;debug存放debug生成的文件;release存放release生成的文件)
在这里插入图片描述

3、将VTK-8.2.0.zip解压到vtk_src文件夹中
在这里插入图片描述

2)VTK的配置、生成

1、打开Cmake(之前看文章说有的电脑要以管理员身份运行不然后续Configure会卡住,但我没有遇到此类问题,写出仅供大家参考)选择两个路径,第一个是指源文件所在路径即vtk_src,第二是指编译生成的文件路径即vtk_bin。下面两个可选框Grouped和Advanced,推荐都勾上,其中Grouped会让结果以分类形式呈现,更加方便寻找;Advanced则会有更多的选项。然后点击“Configure”。
在这里插入图片描述

2、点击“Configure”后出现此窗口,选择对应版本的编译器,如果选择不对,后面可能会提示错误需要回到这边重新选择。如果你是x64的最好选择x64。
此处我们第一栏选择Visual Studio 15 2017,第二栏选择x64,第三栏空中即可,下面四选一用默认的第一个即可,如下图然后点击“Finish”。
在这里插入图片描述

3、之后需要稍等一会儿了,待进度条走完后,便会出现一个喜庆的红色界面,全部报错,把寄打在公屏上,开个小玩笑,这个只是要求你进行设置的确定并不是报错。

我们需要勾选以下内容:
(蓝线划出的即是更改的地方)
BUILD_SHARED_LIBS 动态编译,勾选上(我的默认是勾上的)。

BUILD_EXAMPLES 是官方示例程序,建议勾上但不是必须。

CMAKE_INSTALL_PREFIX 这个表示vtk最后生成的链接库的位置,默认是C:/ProgramFiles /VTK,我们改为E:/VTK/vtk_res。

VTK_Group_Qt 勾选上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、勾选完成后再次点击“Configure”,这次耗时会短很多,红色区域变少了,主要是Qt方面的。

Qt5_DIR等以Qt_5开头的选项,改成自己Qt中 5.9.9/msvc2017_64/lib/cmake/* 中对应的位置,如下图(如果你之前Qt环境配置正确这里应该是默认填好的)
在这里插入图片描述

5、再次“Configure”,这时候红色消失了,点击“Generate”,然后等待进度条走完即可。
在这里插入图片描述

6、打开VTK项目

注意,不要直接在Cmake中点击open project。
在这里插入图片描述

因为在CMAKE_INSTALL_PREFIX路径下写入文件需要管理员权限。所以我们在桌面上右击Visual Studio 2017,以管理员身份运行,然后在程序内打开VTK.sln。(VTK.sln就在我们之前建的vtk_bin当中)
在这里插入图片描述

7、右击右边解决方案资源管理器里的ALL_BUILD,点击“生成”,这时候会开始编译,这个过程时间有点小长,我大概用了二十分钟。
在这里插入图片描述

8、在编译完成后,在工具栏选择Release x64,右击右边解决方案资源管理器里的INSTALL,点击“生成”如果在这一步报错setlocal,很有可能是没有使用管理员身份运行
在这里插入图片描述

9、等进度条走完vtk_res文件夹里出现了一些文件夹,将它们 剪切 到vtk_release中即可。
在这里插入图片描述
在这里插入图片描述

10、清空vtk_res后,在工具栏选择Debug x64,再次右击右边解决方案资源管理器里的INSTALL,点击“生成”,这次将vtk_res中生成的文件夹移动到vtk_debug中。
在这里插入图片描述
在这里插入图片描述
至此,VTK的下载,配置,生成终于完成!


五、将VTK与Qt连接起来

因为Qt引入头文件很麻烦,要在.pro把每个头文件写一句引入语句,我不会什么快捷方法,有大佬写了脚本有兴趣可以查一查。但是我比较熟悉Visual,它的引入头文件就很简单,所以我选择把VTK和Qt都在Visual Studio 2017打开,虽然步骤多但是简单移动适。

1)在Qt的designer中加入VTK控件

找到vtk_release\plugins\designer中的QVTKWidgetPlugin.dll
将其复制到你的Qt目录Qt_5.9.9\5.9.9\msvc2017_64\plugins\designer目录下
在这里插入图片描述
在这里插入图片描述

在Qt_5.9.9\5.9.9\msvc2017_64\bin目录下打开designer.exe,就会增加控件,如图:
在这里插入图片描述在这里插入图片描述


2)在Visual Studio 2017中引入Qt

1、打开Visual Studio 2017,在工具栏打开工具,点开其中的“扩展和更新”,选择联机,并在右侧搜索框搜索Qt,下载Qt Visual Studio Tools。
在这里插入图片描述
在这里插入图片描述

2、下载好了以后在工具栏会出现 “Qt VS Tools”,接下来点击选择Options。
在这里插入图片描述

3、出现以下窗口,选择Qt,Versions,点击。点击黄色的文件夹图标,然后选择你的Qt目录Qt_5.9.9\5.9.9\msvc2017_64\bin中的qmake.exe
在这里插入图片描述

完成后如下:
在这里插入图片描述

4、我们先新建一个Qt项目,如图,不用改默认选项,一路“Next”、“Finish”即可。
(之后在VS中新建Qt项目都要重复 4 到 9 的步骤)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、工具栏选择“Qt VS Tools”,接下来点击选择“Qt Project Settings”
在这里插入图片描述

6、在“配置属性”注意修改的配置、平台和使用的要相同里选择“VC++目录”,在右边点击包含目录,点击最右边的小箭头,点击编辑
在这里插入图片描述

7、点击右上角的黄色文件夹,在其中添加你的Qt目录中的Qt_5.9.9\5.9.9\msvc2017_64\includeQt_5.9.9\5.9.9\msvc2017_64\lib
在这里插入图片描述

8、接下来我们要改变VS的字符编码格式,不然在VS中用Qt写中文字符会报错。
在“配置属性”里选择“常规”,在“字符集”处选择“使用多字节字符集”
在这里插入图片描述

9、在“配置属性”里选择“XML文档生成器”,在“命令行”处“其他选项”中的最后加入“/utf-8
在这里插入图片描述

10、如果想要使用ui,可以根据需要添加
在“配置属性”选择“Qt Project Settings”。在Qt Modules 中应该至少包括 core, gui, widgets,点击右边小箭头以添加ui tools,如下图所示:
在这里插入图片描述
在这里插入图片描述

理论上,此时的Qt项目就可以正常运行了!

但实际上我还是遇到了问题,新的Qt项目可以运行,但原来写的Qt项目现在运行会报错,我又去查了查,发现原来是windows SDK的版本问题,解决方法如下:
11、右击项目,选择“重定向项目”,选择新的版本即可,如下图:
在这里插入图片描述
在这里插入图片描述
完成以上步骤,就彻底完成了!!


3)在Visual Studio 2017中引入VTK

这个就简单很多了,把VTK编译生成的头文件放进包含目录,再引入附加依赖项即可,可以参考上面Qt放入的步骤。
(也是之后在VS中新建项目都要重复,但我确实没想到什么好办法)
在“配置属性”里选择“VC++目录”,在右边点击包含目录,点击最右边的小箭头,点击编辑。
在这里插入图片描述
点击右上角的黄色文件夹,在其中添加你的VTK目录中的VTK\vtk_release\includeVTK\vtk_release\lib
在这里插入图片描述

在“配置属性”里选择“链接器”中的“输入”,在右边点击“附加依赖项”,点击最右边的小箭头,点击编辑。
在这里插入图片描述
在其中加入VTK\vtk_bin\lib\DebugITK\Build\lib\Debug中所有的.lib文件
(此处以Debug为例,可改为Realse)

当然一个一个文件名复制不太现实,或者说太不现实,以下有一个我找到的简单方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单方法如下:
(此处以itk为例,vtk参照以下步骤重复即可)

1、找到对应的目录
在这里插入图片描述

2、在上方路径栏输入“cmd”
在这里插入图片描述

3、在命令行输入“dir /b *.lib>1.txt
在这里插入图片描述

4、然后就会在对应目录下会新建一个 1.txt 文件,该文件包含当前目录下所有的.lib文件,直接复制粘贴即可使用
在这里插入图片描述


六、结束语

作为一个纯纯的小白,为了完成以上内容我看了很多文章,但多少都有点问题,不是太古老就是我操作中会报错,还有内容不完整的。我是一边查资料一边试验,零零散散的拼凑,所以我也不敢保证我说的全部正确,如有错误欢迎指正。
而且我也是初次学习使用VTK,如果有更好的使用方法,欢迎大家交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度优先】LeetCode1932:合并多棵二叉搜索树

作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你 n 个 二叉搜索树的根节点 ,存储在数组 trees 中(下标从 0 开始),对应 n 棵不同的二叉搜索树。trees 中的每棵二叉搜索树 最多有 3 个节点 &#xff0…

一种excel多线程并发写sheet的方案

一、背景 有一次项目的需求要求导出excel,并且将不同的数据分别写到不同的sheet中。 二、 方案概述 首先一开始使用easyexcel去导出excel,结果发现导出时间需要3秒左右。于是想着能不能缩短excel导出时间,于是第一次尝试使用异步线程去查询数…

人工智能原理复习--确定性推理

文章目录 上一篇推理概述自然演绎推理合适公式 归结演绎推理归结原理归结反演 提升归结效率下一篇 上一篇 人工智能原理复习–知识表示(二) 推理概述 推理就是按某种策略由已知判断推出另一判断的思维过程 分类: 演绎推理、归纳推理、默…

kafka 集群 ZooKeeper 模式搭建

Apache Kafka是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序 Kafka 官网:Apache Kafka 关于ZooKeeper的弃用 根据 Kafka官网信息,随着Apache Kafka 3.5版本的发布,Zookeeper现…

Christmas is Coming,一起来DIY雪花灯啦

亲爱的朋友们,圣诞节即将到来!是不是很期待和家人、朋友一起欢度圣诞夜呢?KCC深圳联合立创开源特别为大家精心挑选了一款氛围感满满的雪花灯,让我们一起创造自己的圣诞礼物~ 彩色丝印PCB版的触摸无极调光雪花灯 哇,立创…

VL53-400激光测距传感器

一、产品简介 先由激光二极管对准目标发射激光脉冲。经目标反射后激光向各方向散射。部分散射光返回到传感器接收器,被光学系统接收后成像到雪崩光电二极管上。雪崩光电二极管是一种内部具有放大功能的光学传感器,因此它能检测极其微弱的光信号。记录并…

6.9 Windows驱动开发:内核枚举进线程ObCall回调

在笔者上一篇文章《内核枚举Registry注册表回调》中我们通过特征码定位实现了对注册表回调的枚举,本篇文章LyShark将教大家如何枚举系统中的ProcessObCall进程回调以及ThreadObCall线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用…

02.PostgreSQL 查询处理期间发生了什么?

PostgreSQL 查询处理期间发生了什么? 文中主要内容引用自PostgreSQL指南:内幕探索 查询处理是PostgreSQL中最为复杂的子系统。如PostgreSQL官方文档所述,PostgreSQL支持SQL2011标准中的大多数特性,查询处理子系统能够高效地处理这…

Hdoop学习笔记(HDP)-Part.08 部署Ambari集群

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

有文件实体的后门无文件实体的后门rootkit后门

有文件实体后门和无文件实体后门&RootKit后门 什么是有文件的实体后门: 在传统的webshell当中,后门代码都是可以精确定位到某一个文件上去的,你可以rm删除它,可以鼠标右键操作它,它是有一个文件实体对象存在的。…

西南科技大学(数据结构A)期末自测练习三

一、填空题(每空1分,共10分) 1、为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区。主机将要输出的数据依次写入缓冲区,打印机则依次从缓冲区中取出数据,则该换缓冲区的逻辑结构…

【Java Web学习笔记】 2 - CSS入门

项目代码 零、 CSS引出 CSS 教程 官方教学文档 1.在没有CSS之前,我们想要修改HTML元素的样式需要为每个HTML元素单独定义样式属性,费心费力。所以CSS就出现了。 2.使用CSS将HTML页面的内容与样式分离提高web开发的工作效率(针对前端开发&a…

一篇短文让你彻底理解什么是逻辑门电路

一、门电路概述 门电路:实现基本运算、复合运算的单元电路,如与门、与非门、或门… 注意:门电路中以高/低电平表示逻辑状态的1/0 正逻辑与负逻辑: 正逻辑:高电平表示1、低电平表示0 负逻辑:高电平表示0、低…

k8s ingress 无法找到端点

文章目录 ingress rule无法找到端点这个注解是什么意思呢?为何不生效呢?端点无法更新?如何确认ingressclass呢?修复端点无法发现的问题多个ingress controller 架构 ingress rule无法找到端点 在vnnox-cn集群创建ingress&#xf…

数据结构(三)——算法和算法分析

😀前言 数据结构和算法是计算机科学领域中至关重要的概念。它们为解决实际问题提供了有效的方法和步骤。算法作为解决问题的方法和步骤,在计算机中以指令的有限序列的形式表达。本文将介绍算法的定义、描述和程序设计等方面的内容,帮助您深入…

【FPGA图像处理实战】- 图像基础知识

视频图像处理是FPGA主要应用方向之一,很多FPGA从事或准备进入这一领域,我们现在开始发布新的FPGA实战专栏——FPGA图像处理。 FPGA处理视频图像处理的主要优势是流水线和并行处理运算,特别是现在视频分辨率越来越大,从720p到1080…

二维A*算法

MATLAB2016b可以正常运行 function bidirectional_ASTAR clc; clear; %% 初始化界面 n 11; % field size n x n tiles 20*20的界面 %wallpercent 0.3; % this percent of field is walls 15%的界面作为阻碍物(墙) cmap [1 1 1; ...% 1 - whit…

linux特殊权限_suid_chattr_umask

3.3 特殊权限 如果一个文件很重要,需要依赖特殊权限避免其被删除。 由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞,甚至摧毁系统。3个权限是对了执行文件或目…

FPGA串口接收解帧、并逐帧发送有效数据-2

FPGA串口接收解帧、并逐帧发送有效数据 工程实现的功能:FPGA串口接收到串口调试助手发来的数据,将其数据解帧。判断到正确的帧头和帧尾之后,将有效数据存入rx_data中;另一方面发送端将有效数据逐帧发送出去。 参考:正…

【电路笔记】-串联和并联电阻

串联和并联电阻 文章目录 串联和并联电阻1、概述2、串联和并联电阻示例13、串联和并联电阻示例2 电阻器可以无限数量的串联和并联组合连接在一起,形成复杂的电阻电路。 1、概述 在之前的教程中,我们学习了如何将各个电阻器连接在一起以形成串联电阻器网…