开发环境简介
-
操作系统:Windows 11 64位专业版
-
C++编译器:MSVC (Visual Studio 2022 社区版)
-
界面库:Qt 6.8.2
-
构建工具:CMake 3.31.5
-
VTK源码:VTK9.4.1
安装C++编译器
-
下载 Visual Studio 2022 社区版本
-
安装时选择C++桌面开发工具集
安装时只需要选择“C++桌面开发”工具集即可
安装Qt
安装CMake
下载VTK-9.4.1源码
编译VTK-9.4.1
-
目前看到的应该都是编译的动态库版本
可以编译为静态库。 -
现在的VTK版本是否还支持编译静态库版本?
支持编译为静态库版本。 -
编译静态库版本时,是否需要Qt也是静态库版本?
如果是为了最张编译为单exe文件的VTK应用,那么Qt也是需要编译为静态库版本的。
这样链接后,就可以得到单exe文件的可执行程序。 -
编译静态库版本时,是否需要使用静态库版本的C和C++运行时库?
可以指定使用哪个版本的运行时库。通过设定VTK库自己是动态库还是静态库,以及使用的运行时是动态库还是静态库,
可以得到四种组合:运行时动态库(MD) 运行时静态库(MT) VTK动态库 最常见,使用动态运行时库的动态库版本 通常不会使用,VTK如果是动态库,通常要搭配动态运行时库使用 VTK静态库 使用动态运行时库的表态库版本 使用静态运行时库的静态库版本(此后,我在简单示例中会常使用) 每一种组合又分为 Debug 和Release两种版本。
所以,总共有8种版本。
后续,我们只构建和使用四种不同的版本:
a. 使用动态运行时库的VTK动态库版本
b. 使用静态运行时库的VTK表态库版本版本a 在商用场景下使用的较多,通过安装包把应用涉及的依赖项统一打包发布。包含VTK相关的DLL,以及运行时库相关的DLL。
版本b 在简单示例中使用,单个exe文件就可以运行,不用安装复杂的依赖项,便于传播和演示。 -
若不与Qt联合编译,仅使用VTK可以创建GUI程序吗?还是说只能创建控制台程序?
不与Qt联合编译,仅使用VTK也可以创建GUI程序。
猜测是基于OpenGL进行界面绘制的,可以显示复杂的图形、图像、三维模型等。
但VTK没有丰富的基础界面组件库(如:文本框、按钮等)。与Qt联合编译的意义在于:
Qt提供了丰富基础界面组件,
可以方便地通过传统界面获取用户输入,
或以传统用户界面形式展示VTK的数据处理结果,或结果的某一方面的信息。