安装VTK 7.0.0 并新建自己的工程

来源:互联网 发布:java接口和引用 编辑:程序博客网 时间:2024/06/06 18:03

这两天都在安装VTK,走了不少弯路,查阅了挺多的资料。终于可以自己建立工程,配置VTK库来运行程序了。

关于VTK的安装前人已经写了很多了,博客上资料不少。

首先安装VTK,我安装的是VTK 7.0.0,安装这个教程点击打开链接安装的。

安装后可以利用cmake新建工程来编译也可以在IDE里面新建。我用的是 Microsoft visual studio 2013。本文主要介绍如何在vs2013里面新建工程。

首先,新建项目project1,然后添加cpp文件main.cpp。解决方案平台设置为X64。在属性管理器Microsoft.Cpp.x64.user里面的VC++目录包含目录添加C:\Program Files\VTK\include。(C:\Program Files\VTK这个目录是在用vs编译VTK.sln解决方案里面的INSTALL工程生成的。)

同时,VC++目录库目录添加C:\Program Files\VTK\lib。

最后在链接器的输入添加如下

kernel32.libuser32.libgdi32.libwinspool.libshell32.libole32.liboleaut32.libuuid.libcomdlg32.libadvapi32.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDomainsChemistryOpenGL2-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersFlowPaths-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeneric-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersHyperTree-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersParallelImaging-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersProgrammable-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSelection-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSMP-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersVerdict-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkverdict-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGeovisCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkproj4-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportMFC-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQtOpenGL-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQtSQL-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOSQL-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtksqlite-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingMath-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingMorphological-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingStatistics-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingStencil-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionImage-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOAMR-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOEnSight-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOExodus-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOExport-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOImport-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOInfovis-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtklibxml2-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOLSDyna-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOMINC-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOMovie-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkoggtheora-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOParallel-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkjsoncpp-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOParallelXML-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOPLY-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOVideo-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkLocalExample-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingContextOpenGL2-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingImage-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingLOD-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingQt-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingVolumeOpenGL2-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsContext2D-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsQt-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDomainsChemistry-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersAMR-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkexoIIc-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersParallel-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIONetCDF-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkNetCDF_cxx-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkNetCDF-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkhdf5_hl-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkhdf5-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOXML-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOXMLParser-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkexpat-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkParallelCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOLegacy-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOGeometry-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersTexture-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQt-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingOpenGL2-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkglew-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsInfovis-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkChartsCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingContext2D-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersImaging-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInfovisLayout-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInfovisCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionWidgets-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingHybrid-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOImage-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDICOMParser-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkmetaio-7.0.libcomctl32.libwsock32.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkpng-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtktiff-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkjpeg-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersHybrid-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingGeneral-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingSources-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersModeling-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionStyle-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingAnnotation-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingColor-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingVolume-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingLabel-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingFreeType-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonColor-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersExtraction-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersStatistics-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkalglib-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingFourier-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeometry-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSources-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeneral-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonExecutionModel-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonComputationalGeometry-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonDataModel-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonMisc-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonTransforms-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonMath-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonSystem-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonCore-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtksys-7.0.libws2_32.libPsapi.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkfreetype-7.0.libF:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkzlib-7.0.lib
附:vtk用cmake生成的目录在F:\VTK ITK\VTK\VTK-bin。
这样属性管理器就添加完毕。

下面为测试程序:

//// This example introduces the concepts of interaction into the// C++ environment. A different interaction style (than// the default) is defined.//// First include the required header files for the VTK classes we are using.#include "vtkConeSource.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"#include "vtkCamera.h"#include "vtkActor.h"#include "vtkRenderer.h"#include "vtkInteractorStyleTrackballCamera.h"#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkInteractionStyle);VTK_MODULE_INIT(vtkRenderingFreeType);VTK_MODULE_INIT(vtkRenderingOpenGL2);int main(){//// Next we create an instance of vtkConeSource and set some of its// properties. The instance of vtkConeSource "cone" is part of a// visualization pipeline (it is a source process object); it produces data// (output type is vtkPolyData) which other filters may process.//vtkConeSource *cone = vtkConeSource::New();cone->SetHeight(3.0);cone->SetRadius(1.0);cone->SetResolution(10);//// In this example we terminate the pipeline with a mapper process object.// (Intermediate filters such as vtkShrinkPolyData could be inserted in// between the source and the mapper.)  We create an instance of// vtkPolyDataMapper to map the polygonal data into graphics primitives. We// connect the output of the cone souece to the input of this mapper.//vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();coneMapper->SetInputConnection(cone->GetOutputPort());//// Create an actor to represent the cone. The actor orchestrates rendering// of the mapper's graphics primitives. An actor also refers to properties// via a vtkProperty instance, and includes an internal transformation// matrix. We set this actor's mapper to be coneMapper which we created// above.//vtkActor *coneActor = vtkActor::New();coneActor->SetMapper(coneMapper);//// Create the Renderer and assign actors to it. A renderer is like a// viewport. It is part or all of a window on the screen and it is// responsible for drawing the actors it has.  We also set the background// color here.//vtkRenderer *ren1 = vtkRenderer::New();ren1->AddActor(coneActor);ren1->SetBackground(0.1, 0.2, 0.4);//// Finally we create the render window which will show up on the screen.// We put our renderer into the render window using AddRenderer. We also// set the size to be 300 pixels by 300.//vtkRenderWindow *renWin = vtkRenderWindow::New();renWin->AddRenderer(ren1);renWin->SetSize(300, 300);//// The vtkRenderWindowInteractor class watches for events (e.g., keypress,// mouse) in the vtkRenderWindow. These events are translated into// event invocations that VTK understands (see VTK/Common/vtkCommand.h// for all events that VTK processes). Then observers of these VTK// events can process them as appropriate.vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();iren->SetRenderWindow(renWin);//// By default the vtkRenderWindowInteractor instantiates an instance// of vtkInteractorStyle. vtkInteractorStyle translates a set of events// it observes into operations on the camera, actors, and/or properties// in the vtkRenderWindow associated with the vtkRenderWinodwInteractor.// Here we specify a particular interactor style.vtkInteractorStyleTrackballCamera *style =vtkInteractorStyleTrackballCamera::New();iren->SetInteractorStyle(style);//// Unlike the previous scripts where we performed some operations and then// exited, here we leave an event loop running. The user can use the mouse// and keyboard to perform the operations on the scene according to the// current interaction style. When the user presses the "e" key, by default// an ExitEvent is invoked by the vtkRenderWindowInteractor which is caught// and drops out of the event loop (triggered by the Start() method that// follows.//iren->Initialize();iren->Start();//// Final note: recall that an observers can watch for particular events and// take appropriate action. Pressing "u" in the render window causes the// vtkRenderWindowInteractor to invoke a UserEvent. This can be caught to// popup a GUI, etc. So the Tcl Cone5.tcl example for an idea of how this// works.//// Free up any objects we created. All instances in VTK are deleted by// using the Delete() method.//cone->Delete();coneMapper->Delete();coneActor->Delete();ren1->Delete();renWin->Delete();iren->Delete();style->Delete();return 0;}
最重要的是,每次新建工程要在#include后加上
#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkInteractionStyle);VTK_MODULE_INIT(vtkRenderingFreeType);VTK_MODULE_INIT(vtkRenderingOpenGL2);
这是VTK 7.0.0使用与之前的不同,亲测。具体原因未知。



参考资料:
http://www.vtkchina.org/course/index.php/2013/12/vtk_tutorial_chap_02-2/

http://blog.csdn.net/u012176176/article/details/51233877

http://blog.csdn.net/Q1302182594/article/category/2317649/1


0 0