环境:VTK8.90,Win10_x64,Qt5.11.1,Visual studio 14 2015,CMake 3.16.0,
参考书籍:《VTK图形图像开发进阶》
项目生成过程中按照书中所载和自身需要选择对应的CMake配置,编译过程中选择正确的编译版本,没有出现错误。(与之前不同,之前在编译较低的VTK版本是总是会出现各种各样在错误,需要花时间去解决)
还有就是在输出VTK库时一定要记得以管理员身份打开项目并编译INSTALL工程。
以上比较简单。
问题:
创建一个简单的VTK程序
1.CMakeLists.txt的编写
在以往低版本的VTK中,INCLUDE()语句是没有问题的,但是到这个版本后会出现问题:
![](https://i-blog.csdnimg.cn/blog_migrate/706572e19d98c2393d69265e495095d0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6ce6c0744453fcd2624485010148082d.png)
解决方法:
“必须熟悉新版本的vtk的cmake文件命令,比如老版本的例子中的vtk_module_config
和include(${VTK_USE_FILE})
在新版8.90.0中都不适用了。”
将INCLUDE()语句替换为INCLUDE_DIRECTORIES()语句:
![](https://i-blog.csdnimg.cn/blog_migrate/4fbf3e863293e0ff03f0b3bd6346f9f1.png)
然后CMake正常生成。
2.程序编译没问题,运行过程中出现的错误
首先是.dll文件寻找不到的问题,这个问题很好解决,按书中所讲的方法或者直接在系统环境变量path中添加VTK的dll库目录都可以解决。
再者是程序运行时error:no override found for 'vtkRenderWindow'的错误。
参考:https://blog.csdn.net/q1302182594/article/details/45270891
https://blog.csdn.net/qq_15191677/article/details/68946807
https://blog.csdn.net/imsaws/article/details/15500903
我的选择是
添加头文件和宏定义:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
![](https://i-blog.csdnimg.cn/blog_migrate/05bf751717c94ceb9cac505db7dcdc46.png)
在VTK的编译过程中貌似使用到的是OpenGL2,所以要使用vtkRenderingOpenGL2。