Visual Studio 2013编译VTK7.1.0

来源:互联网 发布:学校校园铃声软件 编辑:程序博客网 时间:2024/06/03 20:05

1.下载VTK

从VTK官网可以下载Source,Data,以及Documentation:VTK Download
VTK安装分为binary install和source code install两种方式,binary install可以下载vtk.exe直接安装VTK,开发直接在Tcl中进行;source code install需要下载CMake进行configure/generate,开发可以使用C++,Java,Python,Tcl等任意方式,因此本文下载Source进行编译。
解压Source到D:\VTK-7.1.0。
安装CMake,参见官网:CMake

2.运行CMake对VTK进行配置

运行CMake,并配置源代码路径和目标路径:

选择Visual Studio 12 2013 Win64作为Current Generator,点击Configure,会出来红色的扫描结果,根据自己需要对其中的选项进行勾选,对其中一些选项进行说明:
CMAKE_INSTALL_PREFIX为默认安装路径,也是INSTALL工程生成的地方,可以选择D:/VTK-7.1.0-build/。
BUILD推荐勾选如下:

INSTALL选项下的内容不用管,默认值就行。
如果需要使用Python,需要勾选VTK_WRAP_PYHTON,并在PYTHON选项下配置好相关路径,否则会出现CMake Could NOT find PythonLibs错误,PYTHON选项配置如下:

其中INCLUDE_DIR是再次Configure之后出现的。
系统中配置好QT的环境变量QTDIR,并在PATH中加入%QTDIR%/bin,则QT部分选项默认即可。
根据需要对VTK_Group进行勾选:

修改完成后重新Configure,然后Generate。

3.生成VTK

打开D:\VTKv7-build下的VTK.sln,右键点击ALL_BUILD,选择重新生成,该步骤耗时较长。
第一次生成后会有一些链接错误,比如打不开..\..\lib\Debug下的vtkViewsInfovisPython27D-7.1.lib文件,可能是由于生成顺序导致,因此再生成一遍,可以减少一部分错误。
生成成功后找到INSTALL项目,右击选择仅用于项目->仅生成INSTALL,会在CMAKE_INSTALL_PREFIX设置的目录下生成include目录,包含VTK需要的头文件。

4.错误解决

4.1 vtkWrappingPythonCore项目无法打开文件“python27.lib”

找到该项目,在属性中添加附加链接库D:\S\D\python-install\libs

4.2 vtkImagingMorphological项目无法打开文件“..\..\lib\Debug\vtkCommonDataModelPython27D-7.1.lib”

找到跟vtkCommonDataModel相关的项目,查看属性->链接器->高级中的导入库部分,即为该项目生成后输出的lib文件,经查看,vtkCommonDataModelPython的输出为vtkCommonDataModelPython.lib,而vtkCommonDataModelPythonD项目的输出为vtkCommonDataModelPython27D-7.1.lib,因此遇到无法打开文件Python27D-7.1.lib错误时,生成相应的PythonD项目,并且该项目的附加库要添加python\libs目录。

注:由于加入python过于繁琐,加上项目不需要python,所以取消python重新进行编译,后续所用的VTK并没有加入python。

5.运行Examples

5.1 CMake编译

运行CMake,source code处选择源代码位置,例如:D:/VTK-7.1.0/Examples/Tutorial/Step1/Cxx,build the binaries选择工程文件生成处,例如:D:/VTKCode/Step1。
第一次configure之后需要填入一些参数,其中VTK_DIR填入VTKConfig.cmake所在路径,一般情况下是安装VTK时配置的生成路径, 即为D:\VTK-7.1.0-build,CMAKE_INSTALL_PREFIX是生成INSTALL.vcxproj的地方,默认是C盘,可以修改到工程文件生成目录下,configure之后generate。
编译之后到工程文件目录下,可以找到Step1.sln,打开之后选择Cone作为启动项目进行生成,生成成功即可运行。

5.2 新建项目编译

启动VS2013,新建一个空项目,将D:/VTK-7.1.0/Examples/Tutorial/Step1/Cxx/Cone.cxx复制到新建项目的目录下,在新项目中添加Cone.cxx到源文件处。
配置项目的属性,在VC++目录下,包含目录添加生成的include文件,例如:D:\VTK-7.1.0-build\include\vtk-7.1,库目录添加lib文件,例如:D:\VTK-7.1.0-build\lib。
链接器的附加依赖项填入lib目录下的所有.lib文件,如下所示:
kernel32.libuser32.libgdi32.libwinspool.libshell32.libole32.liboleaut32.libuuid.libcomdlg32.libadvapi32.libcomctl32.libvfw32.libws2_32.libwsock32.libopengl32.libvtkalglib-7.1.libvtkChartsCore-7.1.libvtkCommonColor-7.1.libvtkCommonComputationalGeometry-7.1.libvtkCommonCore-7.1.libvtkCommonDataModel-7.1.libvtkCommonExecutionModel-7.1.libvtkCommonMath-7.1.libvtkCommonMisc-7.1.libvtkCommonSystem-7.1.libvtkCommonTransforms-7.1.libvtkDICOMParser-7.1.libvtkDomainsChemistry-7.1.libvtkDomainsChemistryOpenGL2-7.1.libvtkexoIIc-7.1.libvtkexpat-7.1.libvtkFiltersAMR-7.1.libvtkFiltersCore-7.1.libvtkFiltersExtraction-7.1.libvtkFiltersFlowPaths-7.1.libvtkFiltersGeneral-7.1.libvtkFiltersGeneric-7.1.libvtkFiltersGeometry-7.1.libvtkFiltersHybrid-7.1.libvtkFiltersHyperTree-7.1.libvtkFiltersImaging-7.1.libvtkFiltersModeling-7.1.libvtkFiltersParallel-7.1.libvtkFiltersParallelImaging-7.1.libvtkFiltersPoints-7.1.libvtkFiltersProgrammable-7.1.libvtkFiltersSelection-7.1.libvtkFiltersSMP-7.1.libvtkFiltersSources-7.1.libvtkFiltersStatistics-7.1.libvtkFiltersTexture-7.1.libvtkFiltersVerdict-7.1.libvtkfreetype-7.1.libvtkGeovisCore-7.1.libvtkgl2ps-7.1.libvtkglew-7.1.libvtkGUISupportQt-7.1.libvtkGUISupportQtSQL-7.1.libvtkhdf5_hl-7.1.libvtkhdf5-7.1.libvtkImagingColor-7.1.libvtkImagingCore-7.1.libvtkImagingFourier-7.1.libvtkImagingGeneral-7.1.libvtkImagingHybrid-7.1.libvtkImagingMath-7.1.libvtkImagingMorphological-7.1.libvtkImagingSources-7.1.libvtkImagingStatistics-7.1.libvtkImagingStencil-7.1.libvtkInfovisCore-7.1.libvtkInfovisLayout-7.1.libvtkInteractionImage-7.1.libvtkInteractionStyle-7.1.libvtkInteractionWidgets-7.1.libvtkIOAMR-7.1.libvtkIOCore-7.1.libvtkIOEnSight-7.1.libvtkIOExodus-7.1.libvtkIOExport-7.1.libvtkIOGeometry-7.1.libvtkIOImage-7.1.libvtkIOImport-7.1.libvtkIOInfovis-7.1.libvtkIOLegacy-7.1.libvtkIOLSDyna-7.1.libvtkIOMINC-7.1.libvtkIOMovie-7.1.libvtkIONetCDF-7.1.libvtkIOParallel-7.1.libvtkIOParallelXML-7.1.libvtkIOPLY-7.1.libvtkIOSQL-7.1.libvtkIOTecplotTable-7.1.libvtkIOVideo-7.1.libvtkIOXML-7.1.libvtkIOXMLParser-7.1.libvtkjpeg-7.1.libvtkjsoncpp-7.1.libvtklibxml2-7.1.libvtkLocalExample-7.1.libvtkmetaio-7.1.libvtkNetCDF_cxx-7.1.libvtkNetCDF-7.1.libvtkoggtheora-7.1.libvtkParallelCore-7.1.libvtkpng-7.1.libvtkproj4-7.1_d.libvtkRenderingAnnotation-7.1.libvtkRenderingContext2D-7.1.libvtkRenderingContextOpenGL2-7.1.libvtkRenderingCore-7.1.libvtkRenderingFreeType-7.1.libvtkRenderingGL2PSOpenGL2-7.1.libvtkRenderingImage-7.1.libvtkRenderingLabel-7.1.libvtkRenderingLOD-7.1.libvtkRenderingOpenGL2-7.1.libvtkRenderingQt-7.1.libvtkRenderingVolume-7.1.libvtkRenderingVolumeOpenGL2-7.1.libvtksqlite-7.1.libvtksys-7.1.libvtkTestingGenericBridge-7.1.libvtkTestingIOSQL-7.1.libvtkTestingRendering-7.1.libvtktiff-7.1.libvtkverdict-7.1.libvtkViewsContext2D-7.1.libvtkViewsCore-7.1.libvtkViewsInfovis-7.1.libvtkViewsQt-7.1.libvtkzlib-7.1.lib
需要注意的是,本次配置并未将.dll文件复制到C:\Windows\System32或者C:\Windows\SysWOW64下,如果是WIN7则需要复制,本机系统是WIN10,只在Path中添加了VTK的.dll文件所在目录。
由于本机系统是64位系统,VTK.sln编译的时候也选择的是Debug x64,因此新建的项目应在配置管理器中将活动解决方案平台换成x64方可生成成功。
运行Cone,出现Error: no override found for 'vtkPolyDataMapper'.错误,经查找资料,由于未使用CMake进行配置,因此需要在源代码开头加入如下代码:
#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkInteractionStyle);
该方法适用于VTK7.0及以上版本,其他版本可参考下列资料:
VTK/VTK 6 Migration/Factories now require defines
VTK/Build System Migration

6.参考资料

VTK入门(配置+常见问题)
VTK在VS2010中的安装(含python)和第一个例子
VTK与ITK的详细安装指南
ITK + VTK + QT on Window 7 64bit and Visual Studio 2010 Pro 32bit project


0 0
原创粉丝点击