一、VTK安装环境
- build_examples :关闭,需要使用后期再编译。
- BUILD_SHARED_LIBS : 打开,可以生成动态链接库dll。后期需要配置环境变量。OFF的话,会生成静态链接库lib,也可以在项目中使用。
- VTK_Group_Qt :打开,支持Qt界面。
- CMAKE_INSTALL_PREFIX = D:\kit\VTK\install :(要修改,最好不要保持默认!)
- 其它保持默认
- 选择ALL_BUILD项目,生成。
- 选择ALL_BUILD项目,生成。
3.1将VTK集成至Qt中,作为插件
有很多中配置方式,这里我就介绍一个最简单最通用的:
首先,先别急着配置,我们看看通过cmake都干了点什么吧:
在cmake中我们一共提到两个目录:
第一个:D:\kit\VTK\bin 为cmake的build后的目标目录
第二个:CMAKE_INSTALL_PREFIX =D:\kit\VTK\install
请注意斜体的两个斜体的单词,一个是构建(build)!一个是安装(install)!
没错,我们用cmake构建了一个安装程序!然后在vs中安装(姑且这么理解)!
所以我们最后的东西都在 D:\kit\VTK\install 中!(至于在vs中生成了那些东西都是什么,我也管不着!除了在D:\kit\VTK\bin目录下查找qt的插件之外)
现在开始配置吧:
1.打开vs,新建一个QT项目:
2.工具-》选项-》项目和解决方案-》vc++目录:
在“包含文件”中添加:D:/kit/VTK/install/include
在“库文件”中添加:D:/kit/VTK/install/lib
(注意,include和lib文件夹下面应该全是.h 和 .lib文件,有时可能是多了一级目录即.../include/vtk/.. 需要注意!)
3.请把D:/kit/VTK/install/bin添加到环境变量;
4.需要在项目单击右键-》属性-》配置属性-》连接器-》输入-》附加依赖项 中加入XXX-06.lib!(使用cmake生成的项目不需要添加,如果用vs2008生成win32控制台程序或qt程序来编写vtk则需要(因为vtk项目一般用cmake来管理!cmake会自动搜集,如果使用cmake甚至上面两条都不需要!不过新手还是慢慢来吧!))
(看到下面一堆要一条一条的添加是不是晕了,没关系,重新打开刚才的D:\kit\VTK\bin\VTK.sln随便选择一个项目右键-》属性-》配置属性-》连接器-》输入-》附加依赖项,把里面的东西先复制出来,然后去掉文件名前面的路径(因为具体的路径已经在上述第二条就解决了),这就是你要的东西了,注意:如果是XXX-lib没有6.0 的话是错误的,需要重新找一个项目,注意一共有一百多项,所以你找的项目可能只添加了几项!拷贝到新的项目可能需要的更多,所以也会遇到无法解析的外部符号的错误)!
vtkalglib-6.0.lib
vtkChartsCore-6.0.lib
vtkCommonColor-6.0.lib
vtkCommonDataModel-6.0.lib
vtkCommonMath-6.0.lib
vtkCommonCore-6.0.lib
vtksys-6.0.lib
vtkCommonMisc-6.0.lib
vtkCommonSystem-6.0.lib
vtkCommonTransforms-6.0.lib
vtkInfovisCore-6.0.lib
vtkFiltersExtraction-6.0.lib
vtkCommonExecutionModel-6.0.lib
vtkFiltersCore-6.0.lib
vtkFiltersGeneral-6.0.lib
vtkCommonComputationalGeometry-6.0.lib
vtkFiltersStatistics-6.0.lib
vtkImagingFourier-6.0.lib
vtkImagingCore-6.0.lib
vtkRenderingContext2D-6.0.lib
vtkRenderingCore-6.0.lib
vtkFiltersGeometry-6.0.lib
vtkFiltersSources-6.0.lib
vtkIOImage-6.0.lib
vtkDICOMParser-6.0.lib
vtkIOCore-6.0.lib
。。。
总结:我们发现除了插件,我们其实一共只配置了三种文件的目录:.dll (动态链接库文件) 、.lib(静态链接库文件)、.h(头文件),而配置方法其实有很多。
我的建议:dll文件(一般在bin目录下):直接将bin目录添加至系统环境变量(不会的请自行百度);
lib文件(一般在lib目录下):通过“工具-》选项-》项目和解决方案-》vc++目录”的方式添加;
h文件(一般在include目录下):同上
根据我的建议你会发现opengl、opencv等等这些基本上全部都是这样的配置方式,而cmake的使用方式也是这样。当然还有其他很多配置方法,不过这样即不会更改系统目录,也不需要来回移动文件。(但是opengl和opengcv不需要配置项目依赖,我也不知道为什么!)
附录1:很多人安装不成功,但是安装的东西影响了后来的重新安装;所以这里介绍如何把环境恢复成初试状态!
1.清空目录D:\kit\VTK\install!
2.清空目录D:\kit\VTK\bin 中的全部内容!(注:查看隐藏文件,你会发现一个vtk.suo的文件,一并删除!)
3.删除环境变量:D:\kit\VTK\install\bin
4.进入vs“工具-》选项-》项目和解决方案-》vc++目录”
删除“包含文件”中的条目:D:\kit\VTK\install\include
删除“库文件”中的条目:D:\kit\VTK\install\lib
5.清除工程中的依赖项;
6.此时可以用cmake重新生了;
附录2:这里记录下可能产生的错误和产生错误的原因(以下为win32命令行运行方式):
1.运行项目时,弹出错误对话框,提示缺少XXX.dll : 没有被指环境变量;
2.运行项目时,输出窗口显示,无法解析的外部符号:没有配置lib目录或没有把全部的lib加入项目依赖中;
3.运行项目时,提示无法找到文件XX.lib : 配置了项目依赖,但是没有配置“库文件”中的条目;
4.要注意运行时,是Debug还是release模式,因为项目依赖是两个分别配置的。所以如果你全部配置是正确的,但是用Release模式运行,就会出现3中的错误。
5.项目依赖需要每个项目都配置一次!
6.最神奇,但是国内网站几乎找不到解决方案的问题 (使用CMAKE生成项目不存在此问题):
“读取位置。。。发生访问冲突。。”
这个问题只需要,在你的每一个代码文件最前面两行添加如下代码:
#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
具体原因见:http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Factories_now_require_defines
7.通过cmake生成了解决方案,运行时如果说缺少QVTK.lib请替换这个项目中的附加依赖项(所有和vtk有关的项,还可能有Qt和opengl等是需要保留的。),见配置过程!
附录3:英文配置教程:http://www.vtk.org/Wiki/VTK/Configure_and_Build
本文少部分内容来自网上,如需修改请告知!楼主花了大量的时间验证和修改,转载请注明出处。