vtk安装与配置(VS2010+vtk-5.8.0)

      最近做用PCL做场景方面的东西,看到Visualization部分,就不知不觉琢磨到VTK了,由于PCL使用的是vtk-5.8.0,

今天安装了一下,我的环境:WIn7 + VS2010 +vtk-5.8.0 遇到了一些问题,所以做个记录。

一、安装

1、下载:
     (1)VTK  

                Source:      vtk-5.8.0.zip
      Data:        vtkdata-5.8.0.zip

      Documentation: vtkDocHtml-5.8.0.tar.gz (文档可以不下载)

          下载地址: http://vtk.org/VTK/resources/software.html#previous2

              (2)cmake-2.8.2-win32-x86.zip
            (cmake程序下载:http://www.cmake.org/HTML/Index.html

2、 将 vtk-5.8.0.zip 解压到D:vtk-5.8.0VTK, 将vtkdata-5.10.1.zip解压到D:vtk-5.8.0vtkdata

3、 解压 cmake-2.8.2 win32-x86.zip,运行{解压目录}incmake-gui.exe,设置sourse code目录为D:vtk-5.8.0VTK,build目录为D:vtk-5.8.0  VTK-bin    按 configure 按钮,选Visual Studio 10编译器,然后cmake会描所需要的文件。
    选中 Advanced 再按 configure,可以看到一个vtk_use_guisupport,选择它,再按 configure, 选vtk_use_mfc,再configure,configure的次数是无所谓的。

    build_shared_libs: 如果设置为off,就只会生成lib 文件。如果设置为on,将会多生成 dll 文件,这些dll需要拷到windows/system目录下。如果用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,即on时,应用程序必须找到动态库才能运行。

    所有项目会变成灰色后后可以点击 Generate,完成时会提示 Generating done,此时关闭cmake。

4、 用 vc++2010打开 D:vtk-5.8.0VTK-binUtilitiesMaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。

 

5、打开D:vtk-5.8.0VTK-bin目录下的VTK.sln,右键点击All_Build选择重新生成。

 

遇到的错误:

 

This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.

 

解决办法为:

 

右击_WIN32_WINNT,查找所有引用,将查找出的文件中的4stdafx.h文件中的如下部分改动为:

 

找到五个工程:vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC、vtkMFC

 

a.打开前四个工程源文件中的stdAfx.h,

 

如果找不到,则打开<资源文件>中的stdAfx.cpp,打开找到其中#include "stdAfx.h" ,右击:<打开"stdAfx.h">

 

b.打开vtkMFC工程的vtkMFCWindow.cpp,按如下方法修改

 

(注:a.4个stdafx.h

 

3个都是在D:vtk-5.8.0VTKExamplesGUIWin32vtkMFC 下面,你可以搜索一下,共4个stdafx.h,都改

 

1个在D:vtk-5.8.0VTKExamplesGUIWin32SampleMFC下面

 

b.一个 vtkMFCWindow.cpp, 在D:vtk-5.8.0VTKGUISupportMFC

 

 

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
 #ifndef WINVER        // Allow use of features specific to Windows 95 and Windows NT 4 or later.
 #define WINVER 0x0601    // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
 #endif
 
 #ifndef _WIN32_WINNT    // Allow use of features specific to Windows NT 4 or later.
 #define _WIN32_WINNT 0x0601    // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
 #endif            
 
 #if _MSC_VER >= 1300
 #ifndef _WIN32_WINDOWS    // Allow use of features specific to Windows 98 or later.
 #define _WIN32_WINDOWS 0x0601 // Change this to the appropriate value to target Windows Me or later.
 #endif
 #endif
 
 #ifndef _WIN32_IE      // Allow use of features specific to IE 4.0 or later.
 #define _WIN32_IE 0x0800  // Change this to the appropriate value to target IE 5.0 or later.
 #endif

 

 

红字对应的是win7版本。

 

另外还要改动文件vtkMFCWindow.cpp中的部分代码:

 

// Allow use of features specific to Windows 95 and Windows NT 4 or later.
#ifndef WINVER
#define WINVER 0x0601
#endif

// Define _WIN32_WINNT and _WIN32_IE to avoid the following error with Visual
// Studio 2008 SP1:
// "C:Program FilesMicrosoft SDKsWindowsv6.0Aincludesdkddkver.h(217) :
// fatal error C1189: #error :  _WIN32_WINNT settings conflicts with _WIN32_IE
// setting"

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601 // =_WIN32_WINNT_NT4
#endif
#ifndef _WIN32_IE
#define _WIN32_IE 0x0800 //=_WIN32_IE_IE60SP1
#endif

 

此时,应该没有问题了。

 

 

 

二、新建项目的配置

 

1. 新建项目Test(控制台应用程序空项目),增加Test.cpp文件,用Cone6.cxx的文件内容覆盖Test.cpp的内容。

 

1.1 配置附加包含目录,位于项目属性->配置属性->c/c++/常规 的第一项,拷入入下述内容(具体可通过查看实例的附加包含目录):

 

D:vtk-5.8.0VTK;D:vtk-5.8.0VTKCommon;D:vtk-5.8.0VTKUtilities;D:vtk-5.8.0VTKVolumeRendering;D:vtk-5.8.0VTKGraphics;D:vtk-5.8.0VTKFiltering;D:vtk-5.8.0VTK-binCommon;D:vtk-5.8.0VTK-binRendering;%(AdditionalIncludeDirectories)

 

1.2 附加依赖项,位于项目属性->链接器->输入 ->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负责....性质的内容,若想直接复制,请确保新建项目与拟拷配置的项目位于同一文件夹下):

 

kernel32.lib

 

user32.lib

 

gdi32.lib

 

winspool.lib

 

shell32.lib

 

ole32.lib

 

oleaut32.lib

 

uuid.lib

 

comdlg32.lib

 

advapi32.lib

 

....VTKininDebugvtkRendering.lib

 

....VTKininDebugvtkGraphics.lib

 

....VTKininDebugvtkImaging.lib

 

....VTKininDebugvtkFiltering.lib

 

....VTKininDebugvtkCommon.lib

 

....VTKininDebugvtksys.lib

 

ws2_32.lib

 

 

1.3

 

将D:vtk-5.8.0VTK-bininDebug这个文件夹选择此中所有的DLL 后缀的文件全部复制到c:windowssystem32 (调试时推荐),或者拷贝到VC项目可执行文件所在位置(安装到其他机器时拷贝)。

 

1.4    后右击Cone6,选择调试->启动新实例,看到Cane6的实例窗口

 

(可以修改

 

  for (i = 0; i < 360; ++i)

 

中的360改更为大数值如7200 效果会稍微明显一点)

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/Akunwjy/p/VTK.html