VS2013编译VTK7.1.1
Posted AijunHe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2013编译VTK7.1.1相关的知识,希望对你有一定的参考价值。
1.下载VTK
2.安装CMake
3.运行CMake对VTK进行配置
配置源代码路径和目标路径,在CMake界面上的“Where is the source code”文本框里输入前一步解压VTK-7.1.1.zip之后的路径,即D:\\Toolkits\\VTK\\VTK-7.1.1。也就是这个文本框应该输入VTK源码目录里最外层的CMakeLists.txt文件所在的路径。接着,在“Where to build the binaries”文本框里输入前一步新建的空文件夹的路径,即D:\\Toolkits\\VTK\\VTK-7.1.1-bin,这个文本框所输的路径可以跟“Where is the source code”的一样,分开两个不同的路径的好处是后续编译过程生成的文件不会跟VTK的源码混合在一起,避免对源码目录的“污染”,这也是后续内容介绍的CMake的“in-place”和“out-of-place”的区别。
以上两个文本框输入完之后,按“Configure”按钮,会弹出如下图所示的对话框,在Specify the generator for this project处选择Visual Studio 12 2013 Win64:
点Finish,回CMake的主界面,CMake即开始根据具体的平台环境配置VTK工程,配置时间会因硬件配置的不同而不同,一般需要几分钟时间。
配置完成后,CMake界面如下图所示:
Configure完成后会出来红色的扫描结果,根据自己需要对其中的选项进行勾选。
关于VTK的一些CMake配置选项的说明:
BUILD_EXAMPLES —默认是关闭的,如果打开这个选项,则会编译VTK例子,同时VTK编译所需的时间也较长,占用的磁盘空间也较大。对于初学者来说,建议把这个选项打开。
BUILD_SHARED_LIBS —默认是关闭的,意味着VTK是静态编译;如果打开这个选项,则是动态编译。
“静态编译”与“动态编译”的区别:静态编译就是在编译的时候把所有的模块都编译进可执行文件(exe)里去,当启动这个可执行文件时所有的模块都已加载进来。动态编译则是编译的时候需要的模块都没有编译进去,一般情况下可以把这些模块都编译成动态链接库DLL,启动程序(初始化)的时候这些模块不会被加载,运行的时候用到那个模块就调用哪个DLL文件。静态链接库编译相当于你带着一个工具包到处跑,遇到有需要的地方不需要周围的环境提供相应的工具,自己用自己工具包的工具就行了,所以当环境发生变化可以尽可能的无视;动态链接库编译相当于不带任何东西,走到哪是哪。这两者的区别显然就是前者重量增加了,即程序的体积会比后者的大。
所以,究竟是用“静态编译”还是“动态编译”,关键看自己的需要。对于VTK初学者而言,所涉及到的工程可能都比较小,建议用“静态编译”,也方便把VTK程序移植到其他没有安装VTK的计算机上运行。本书的VTK类库是采用静态编译。
BUILD_TESTING —默认是打开的,表示会编译VTK的测试程序。VTK里每个类都有对应的程序文件对该类进行测试,对于初学者而言,可以关闭掉这个选项,后续如有需要,可以再打开此选项。
VTK_DATA_ROOT —指向VTKData所在的路径,即第1章里下载的文件vtkdata-5.10.0.zip解压后的路径。一般情况下,VTK能够自动搜索到,如果没有搜索到可以手动输入,在运行VTK的例子时需要用到这些数据。
CMAKE_INSTALL_PREFIX —这个选项表示VTK的安装路径,默认的路径是:C:/Program Files/VTK。该选项的值可不作更改,按默认值即可。
VTK_USE_QT —是否使用Qt。在这个系列里,我们使用Qt作为GUI开发工具,所以勾上该选项。
VTK_WRAP_JAVA、VTK_WRAP_PYTHON、VTK_WRAP_TCL —这三个选项是供准备使用Java、Python或者Tcl语言开发VTK工程的用户选择的。VTK由两个子系统组成,分别是C++类库和提供给Java、Tcl和Python来操作该类库的解释器工具,如果勾上以上三个选项,即会编译这些解释器工具。
勾选图2.3的“Advance”复选框,可以在CMake界面上看到更多的选项,各选项分别表示什么意思,可以把鼠标在该选项名字停留片刻,即会弹出关于该选项的提示信息。另外“Advance”视图下以下几个选项需要说明一下:
BUILD_DOCUMENTATION —默认是关闭的,如果打开这个选项,则会编译VTK帮助文档,由于这个文档VTK已提供下载,所以可以不选。
VTK_USE_GUISUPPORT — VTK是否支持GUI,Windows下如果需要使用MFC开发的,需要勾选上这个选项。本教程在演示的时候也会把这个选项勾选,如果你确定不使用MFC,可以不用选择该选项。
定制每个选项的值以后,按“Configure”按钮,继续配置,CMake界面如图2.4所示。
3.生成VTK
4.错误解决
4.1 vtkWrappingPythonCore项目无法打开文件“python27.lib”
4.2 vtkImagingMorphological项目无法打开文件“..\\..\\lib\\Debug\\vtkCommonDataModelPython27D-7.1.lib”
5.运行Examples
5.1 CMake编译
5.2 新建项目编译
- kernel32.lib
- user32.lib
- gdi32.lib
- winspool.lib
- shell32.lib
- ole32.lib
- oleaut32.lib
- uuid.lib
- comdlg32.lib
- advapi32.lib
- comctl32.lib
- vfw32.lib
- ws2_32.lib
- wsock32.lib
- opengl32.lib
- vtkalglib-7.1.lib
- vtkChartsCore-7.1.lib
- vtkCommonColor-7.1.lib
- vtkCommonComputationalGeometry-7.1.lib
- vtkCommonCore-7.1.lib
- vtkCommonDataModel-7.1.lib
- vtkCommonExecutionModel-7.1.lib
- vtkCommonMath-7.1.lib
- vtkCommonMisc-7.1.lib
- vtkCommonSystem-7.1.lib
- vtkCommonTransforms-7.1.lib
- vtkDICOMParser-7.1.lib
- vtkDomainsChemistry-7.1.lib
- vtkDomainsChemistryOpenGL2-7.1.lib
- vtkexoIIc-7.1.lib
- vtkexpat-7.1.lib
- vtkFiltersAMR-7.1.lib
- vtkFiltersCore-7.1.lib
- vtkFiltersExtraction-7.1.lib
- vtkFiltersFlowPaths-7.1.lib
- vtkFiltersGeneral-7.1.lib
- vtkFiltersGeneric-7.1.lib
- vtkFiltersGeometry-7.1.lib
- vtkFiltersHybrid-7.1.lib
- vtkFiltersHyperTree-7.1.lib
- vtkFiltersImaging-7.1.lib
- vtkFiltersModeling-7.1.lib
- vtkFiltersParallel-7.1.lib
- vtkFiltersParallelImaging-7.1.lib
- vtkFiltersPoints-7.1.lib
- vtkFiltersProgrammable-7.1.lib
- vtkFiltersSelection-7.1.lib
- vtkFiltersSMP-7.1.lib
- vtkFiltersSources-7.1.lib
- vtkFiltersStatistics-7.1.lib
- vtkFiltersTexture-7.1.lib
- vtkFiltersVerdict-7.1.lib
- vtkfreetype-7.1.lib
- vtkGeovisCore-7.1.lib
- vtkgl2ps-7.1.lib
- vtkglew-7.1.lib
- vtkGUISupportQt-7.1.lib
- vtkGUISupportQtSQL-7.1.lib
- vtkhdf5_hl-7.1.lib
- vtkhdf5-7.1.lib
- vtkImagingColor-7.1.lib
- vtkImagingCore-7.1.lib
- vtkImagingFourier-7.1.lib
- vtkImagingGeneral-7.1.lib
- vtkImagingHybrid-7.1.lib
- vtkImagingMath-7.1.lib
- vtkImagingMorphological-7.1.lib
- vtkImagingSources-7.1.lib
- vtkImagingStatistics-7.1.lib
- vtkImagingStencil-7.1.lib
- vtkInfovisCore-7.1.lib
- vtkInfovisLayout-7.1.lib
- vtkInteractionImage-7.1.lib
- vtkInteractionStyle-7.1.lib
- vtkInteractionWidgets-7.1.lib
- vtkIOAMR-7.1.lib
- vtkIOCore-7.1.lib
- vtkIOEnSight-7.1.lib
- vtkIOExodus-7.1.lib
- vtkIOExport-7.1.lib
- vtkIOGeometry-7.1.lib
- vtkIOImage-7.1.lib
- vtkIOImport-7.1.lib
- vtkIOInfovis-7.1.lib
- vtkIOLegacy-7.1.lib
- vtkIOLSDyna-7.1.lib
- vtkIOMINC-7.1.lib
- vtkIOMovie-7.1.lib
- vtkIONetCDF-7.1.lib
- vtkIOParallel-7.1.lib
- vtkIOParallelXML-7.1.lib
- vtkIOPLY-7.1.lib
- vtkiosQL-7.1.lib
- vtkIOTecplotTable-7.1.lib
- vtkIOVideo-7.1.lib
- vtkIOXML-7.1.lib
- vtkIOXMLParser-7.1.lib
- vtkjpeg-7.1.lib
- vtkjsoncpp-7.1.lib
- vtklibxml2-7.1.lib
- vtkLocalExample-7.1.lib
- vtkmetaio-7.1.lib
- vtkNetCDF_cxx-7.1.lib
- vtkNetCDF-7.1.lib
- vtkoggtheora-7.1.lib
- vtkParallelCore-7.1.lib
- vtkpng-7.1.lib
- vtkproj4-7.1_d.lib
- vtkRenderingAnnotation-7.1.lib
- vtkRenderingContext2D-7.1.lib
- vtkRenderingContextOpenGL2-7.1.lib
- vtkRenderingCore-7.1.lib
- vtkRenderingFreeType-7.1.lib
- vtkRenderingGL2PSOpenGL2-7.1.lib
- vtkRenderingImage-7.1.lib
- vtkRenderingLabel-7.1.lib
- vtkRenderingLOD-7.1.lib
- vtkRenderingOpenGL2-7.1.lib
- vtkRenderingQt-7.1.lib
- vtkRenderingVolume-7.1.lib
- vtkRenderingVolumeOpenGL2-7.1.lib
- vtksqlite-7.1.lib
- vtksys-7.1.lib
- vtkTestingGenericBridge-7.1.lib
- vtkTestingIOSQL-7.1.lib
- vtkTestingRendering-7.1.lib
- vtktiff-7.1.lib
- vtkverdict-7.1.lib
- vtkViewsContext2D-7.1.lib
- vtkViewsCore-7.1.lib
- vtkViewsInfovis-7.1.lib
- vtkViewsQt-7.1.lib
- vtkzlib-7.1.lib
kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib comctl32.lib vfw32.lib ws2_32.lib wsock32.lib opengl32.lib vtkalglib-7.1.lib vtkChartsCore-7.1.lib vtkCommonColor-7.1.lib vtkCommonComputationalGeometry-7.1.lib vtkCommonCore-7.1.lib vtkCommonDataModel-7.1.lib vtkCommonExecutionModel-7.1.lib vtkCommonMath-7.1.lib vtkCommonMisc-7.1.lib vtkCommonSystem-7.1.lib vtkCommonTransforms-7.1.lib vtkDICOMParser-7.1.lib vtkDomainsChemistry-7.1.lib vtkDomainsChemistryOpenGL2-7.1.lib vtkexoIIc-7.1.lib vtkexpat-7.1.lib vtkFiltersAMR-7.1.lib vtkFiltersCore-7.1.lib vtkFiltersExtraction-7.1.lib vtkFiltersFlowPaths-7.1.lib vtkFiltersGeneral-7.1.lib vtkFiltersGeneric-7.1.lib vtkFiltersGeometry-7.1.lib vtkFiltersHybrid-7.1.lib vtkFiltersHyperTree-7.1.lib vtkFiltersImaging-7.1.lib vtkFiltersModeling-7.1.lib vtkFiltersParallel-7.1.lib vtkFiltersParallelImaging-7.1.lib vtkFiltersPoints-7.1.lib vtkFiltersProgrammable-7.1.lib vtkFiltersSelection-7.1.lib vtkFiltersSMP-7.1.lib vtkFiltersSources-7.1.lib vtkFiltersStatistics-7.1.lib vtkFiltersTexture-7.1.lib vtkFiltersVerdict-7.1.lib vtkfreetype-7.1.lib vtkGeovisCore-7.1.lib vtkgl2ps-7.1.lib vtkglew-7.1.lib vtkGUISupportQt-7.1.lib vtkGUISupportQtSQL-7.1.lib vtkhdf5_hl-7.1.lib vtkhdf5-7.1.lib vtkImagingColor-7.1.lib vtkImagingCore-7.1.lib vtkImagingFourier-7.1.lib vtkImagingGeneral-7.1.lib vtkImagingHybrid-7.1.lib vtkImagingMath-7.1.lib vtkImagingMorphological-7.1.lib vtkImagingSources-7.1.lib vtkImagingStatistics-7.1.lib vtkImagingStencil-7.1.lib vtkInfovisCore-7.1.lib vtkInfovisLayout-7.1.lib vtkInteractionImage-7.1.lib vtkInteractionStyle-7.1.lib vtkInteractionWidgets-7.1.lib vtkIOAMR-7.1.lib vtkIOCore-7.1.lib vtkIOEnSight-7.1.lib vtkIOExodus-7.1.lib vtkIOExport-7.1.lib vtkIOGeometry-7.1.lib vtkIOImage-7.1.lib vtkIOImport-7.1.lib vtkIOInfovis-7.1.lib vtkIOLegacy-7.1.lib vtkIOLSDyna-7.1.lib vtkIOMINC-7.1.lib vtkIOMovie-7.1.lib vtkIONetCDF-7.1.lib vtkIOParallel-7.1.lib vtkIOParallelXML-7.1.lib vtkIOPLY-7.1.lib vtkIOSQL-7.1.lib vtkIOTecplotTable-7.1.lib vtkIOVideo-7.1.lib vtkIOXML-7.1.lib vtkIOXMLParser-7.1.lib vtkjpeg-7.1.lib vtkjsoncpp-7.1.lib vtklibxml2-7.1.lib vtkLocalExample-7.1.lib vtkmetaio-7.1.lib vtkNetCDF_cxx-7.1.lib vtkNetCDF-7.1.lib vtkoggtheora-7.1.lib vtkParallelCore-7.1.lib vtkpng-7.1.lib vtkproj4-7.1_d.lib vtkRenderingAnnotation-7.1.lib vtkRenderingContext2D-7.1.lib vtkRenderingContextOpenGL2-7.1.lib vtkRenderingCore-7.1.lib vtkRenderingFreeType-7.1.lib vtkRenderingGL2PSOpenGL2-7.1.lib vtkRenderingImage-7.1.lib vtkRenderingLabel-7.1.lib vtkRenderingLOD-7.1.lib vtkRenderingOpenGL2-7.1.lib vtkRenderingQt-7.1.lib vtkRenderingVolume-7.1.lib vtkRenderingVolumeOpenGL2-7.1.lib vtksqlite-7.1.lib vtksys-7.1.lib vtkTestingGenericBridge-7.1.lib vtkTestingIOSQL-7.1.lib vtkTestingRendering-7.1.lib vtktiff-7.1.lib vtkverdict-7.1.lib vtkViewsContext2D-7.1.lib vtkViewsCore-7.1.lib vtkViewsInfovis-7.1.lib vtkViewsQt-7.1.lib vtkzlib-7.1.lib需要注意的是,本次配置并未将.dll文件复制到C:\\Windows\\System32或者C:\\Windows\\SysWOW64下,如果是WIN7则需要复制,本机系统是WIN10,只在Path中添加了VTK的.dll文件所在目录。
- #include <vtkAutoInit.h>
- VTK_MODULE_INIT(vtkRenderingOpenGL2);
- VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);该方法适用于VTK7.0及以上版本,其他版本可参考下列资料:
以上是关于VS2013编译VTK7.1.1的主要内容,如果未能解决你的问题,请参考以下文章
LinuxC++开发面试系列:代码运行gcc编译system函数与VS2013 C4996解决方法
在windows7上用vs2013编译和调试mysql源代码