VTK库下载地址,下载VTK源码
需要工具
1.VS2012
2.CMAKE
官网

cmake配置项目
下载后的vtk7.1.1库解压
安装好cmake,打开cmake-gui,在where is the source code 后面填入vtk解压后的源码目录。where to build the binaries后面是自己指定的编译目录。之后点击configure。

选择VS2012,finish

configure完成后,CMAKE_INSTALL_PREFIX填入指定的安装目录

再次点击configure,configure完成后,点击generate,在编译目录下生成vs2012项目
编译VTK库
使用vs2012打开VTK.sln

对于ALL_BUILD项目,右键,生成。等待十几分钟编译时间

生成结束后,对于INSTALL项目右键,生成,生成结束后,会在cmake指定的安装目录文件夹下生成库文件

代码测试
新建一个VS2012项目
编辑以下的代码,加载16.stl文件显示图像
#include <vtkSmartPointer.h>
#include <vtkSTLReader.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2); // 和你cmake时候选的opengl相匹配,如果是opengl那就是vtkRenderingOpenGL,而我选的是opengl2,所以这里的参数是vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
int main(int argc, char* argv[])
{
// 创建STL文件读取器
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName("16.stl");
// 创建PolyDataMapper和Actor
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// 创建Renderer、RenderWindow和RenderWindowInteractor
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
interactor->SetRenderWindow(renderWindow);
// 开始渲染和交互
renderWindow->Render();
interactor->Start();
return 0;
}
点击项目,属性,设置附加包含目录,是你的VTK安装路径的include文件夹/VTK版本
D:\libs\VTK\include\vtk-7.1;

设置附加库目录,VTK安装路径的lib文件夹
D:\libs\VTK\lib;

设置附加依赖项,可以在库目录下使用cmd命令生成
DIR *.lib*/B>LIST.TXT
vtksys-7.1.lib
vtkCommonCore-7.1.lib
vtkCommonMath-7.1.lib
vtkCommonMisc-7.1.lib
vtkCommonSystem-7.1.lib
vtkCommonTransforms-7.1.lib
vtkCommonDataModel-7.1.lib
vtkCommonColor-7.1.lib
vtkCommonExecutionModel-7.1.lib
vtkCommonComputationalGeometry-7.1.lib
vtkFiltersCore-7.1.lib
vtkFiltersGeneral-7.1.lib
vtkImagingCore-7.1.lib
vtkImagingFourier-7.1.lib
vtkalglib-7.1.lib
vtkFiltersStatistics-7.1.lib
vtkFiltersExtraction-7.1.lib
vtkInfovisCore-7.1.lib
vtkFiltersGeometry-7.1.lib
vtkFiltersSources-7.1.lib
vtkRenderingCore-7.1.lib
vtkzlib-7.1.lib
vtkfreetype-7.1.lib
vtkRenderingFreeType-7.1.lib
vtkRenderingContext2D-7.1.lib
vtkChartsCore-7.1.lib
vtkDICOMParser-7.1.lib
vtkIOCore-7.1.lib
vtkIOLegacy-7.1.lib
vtkexpat-7.1.lib
vtkIOXMLParser-7.1.lib
vtkDomainsChemistry-7.1.lib
vtkmetaio-7.1.lib
vtkjpeg-7.1.lib
vtkpng-7.1.lib
vtktiff-7.1.lib
vtkIOImage-7.1.lib
vtkglew-7.1.lib
vtkRenderingOpenGL2-7.1.lib
vtkDomainsChemistryOpenGL2-7.1.lib
vtkIOXML-7.1.lib
vtkParallelCore-7.1.lib
vtkFiltersAMR-7.1.lib
vtkFiltersFlowPaths-7.1.lib
vtkFiltersGeneric-7.1.lib
vtkImagingSources-7.1.lib
vtkFiltersHybrid-7.1.lib
vtkFiltersHyperTree-7.1.lib
vtkImagingGeneral-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
vtkFiltersSMP-7.1.lib
vtkFiltersSelection-7.1.lib
vtkFiltersTexture-7.1.lib
vtkverdict-7.1.lib
vtkFiltersVerdict-7.1.lib
vtkImagingHybrid-7.1.lib
vtkInfovisLayout-7.1.lib
vtkInteractionStyle-7.1.lib
vtkImagingColor-7.1.lib
vtkRenderingAnnotation-7.1.lib
vtkRenderingVolume-7.1.lib
vtkInteractionWidgets-7.1.lib
vtkViewsCore-7.1.lib
vtkproj4-7.1_d.lib
vtkGeovisCore-7.1.lib
vtkhdf5-7.1.lib
vtkhdf5_hl-7.1.lib
vtkIOAMR-7.1.lib
vtkIOEnSight-7.1.lib
vtkNetCDF-7.1.lib
vtkNetCDF_cxx-7.1.lib
vtkexoIIc-7.1.lib
vtkIOExodus-7.1.lib
vtkgl2ps-7.1.lib
vtkRenderingGL2PSOpenGL2-7.1.lib
vtkIOExport-7.1.lib
vtkIOGeometry-7.1.lib
vtkIOImport-7.1.lib
vtklibxml2-7.1.lib
vtkIOInfovis-7.1.lib
vtkIOLSDyna-7.1.lib
vtkIOMINC-7.1.lib
vtkoggtheora-7.1.lib
vtkIOMovie-7.1.lib
vtkIONetCDF-7.1.lib
vtkIOPLY-7.1.lib
vtkjsoncpp-7.1.lib
vtkIOParallel-7.1.lib
vtkIOParallelXML-7.1.lib
vtksqlite-7.1.lib
vtkIOSQL-7.1.lib
vtkIOTecplotTable-7.1.lib
vtkIOVideo-7.1.lib
vtkImagingMath-7.1.lib
vtkImagingMorphological-7.1.lib
vtkImagingStatistics-7.1.lib
vtkImagingStencil-7.1.lib
vtkInteractionImage-7.1.lib
vtkRenderingContextOpenGL2-7.1.lib
vtkRenderingImage-7.1.lib
vtkRenderingLOD-7.1.lib
vtkRenderingLabel-7.1.lib
vtkRenderingVolumeOpenGL2-7.1.lib
vtkViewsContext2D-7.1.lib
vtkViewsInfovis-7.1.lib
之后编译运行

如果提示找不打xxx.dll文件,将VTK安装目录下的bin文件夹加入path环境变量,重启VS后运行

报错:no override found for vtkpolydata
运行时如果报错
no override found for vtkpolydata
cmake配置时,记住这里的是OPENGL2或者是OPENGL

代码中加入初始化