这两天都在安装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.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDomainsChemistryOpenGL2-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersFlowPaths-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeneric-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersHyperTree-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersParallelImaging-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersProgrammable-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSelection-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSMP-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersVerdict-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkverdict-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGeovisCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkproj4-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportMFC-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQtOpenGL-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQtSQL-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOSQL-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtksqlite-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingMath-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingMorphological-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingStatistics-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingStencil-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionImage-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOAMR-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOEnSight-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOExodus-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOExport-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOImport-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOInfovis-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtklibxml2-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOLSDyna-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOMINC-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOMovie-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkoggtheora-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOParallel-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkjsoncpp-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOParallelXML-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOPLY-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOVideo-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkLocalExample-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingContextOpenGL2-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingImage-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingLOD-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingQt-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingVolumeOpenGL2-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsContext2D-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsQt-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDomainsChemistry-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersAMR-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkexoIIc-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersParallel-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIONetCDF-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkNetCDF_cxx-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkNetCDF-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkhdf5_hl-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkhdf5-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOXML-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOXMLParser-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkexpat-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkParallelCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOLegacy-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOGeometry-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersTexture-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkGUISupportQt-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingOpenGL2-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkglew-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsInfovis-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkChartsCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingContext2D-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersImaging-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInfovisLayout-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInfovisCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkViewsCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionWidgets-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingHybrid-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOImage-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkDICOMParser-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkIOCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkmetaio-7.0.lib
comctl32.lib
wsock32.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkpng-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtktiff-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkjpeg-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersHybrid-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingGeneral-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingSources-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersModeling-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkInteractionStyle-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingAnnotation-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingColor-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingVolume-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingLabel-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingFreeType-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkRenderingCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonColor-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersExtraction-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersStatistics-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkalglib-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingFourier-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkImagingCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeometry-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersSources-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersGeneral-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkFiltersCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonExecutionModel-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonComputationalGeometry-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonDataModel-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonMisc-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonTransforms-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonMath-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonSystem-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkCommonCore-7.0.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtksys-7.0.lib
ws2_32.lib
Psapi.lib
F:\VTK ITK\VTK\VTK-bin\lib\Debug\vtkfreetype-7.0.lib
F:\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
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
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingOpenGL2);
这是VTK 7.0.0使用与之前的不同,亲测。具体原因未知。
http://blog.csdn.net/u012176176/article/details/51233877
http://blog.csdn.net/Q1302182594/article/category/2317649/1