最近做用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.0\VTK, 将vtkdata-5.10.1.zip解压到D:\vtk-5.8.0\vtkdata
3、 解压 cmake-2.8.2 win32-x86.zip,运行{解压目录}\bin\cmake-gui.exe,设置sourse code目录为D:\vtk-5.8.0\VTK\,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.0\VTK-bin\Utilities\MaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。
5、打开D:\vtk-5.8.0\VTK-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,查找所有引用,将查找出的文件中的4个stdafx.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.0\VTK\Examples\GUI\Win32\vtkMFC 下面,你可以搜索一下,共4个stdafx.h,都改
1个在D:\vtk-5.8.0\VTK\Examples\GUI\Win32\SampleMFC下面
b.一个 vtkMFCWindow.cpp, 在D:\vtk-5.8.0\VTK\GUISupport\MFC
)
// 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 Files\Microsoft SDKs\Windows\v6.0A\include\sdkddkver.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.0\VTK;D:\vtk-5.8.0\VTK\Common;D:\vtk-5.8.0\VTK\Utilities;D:\vtk-5.8.0\VTK\VolumeRendering;D:\vtk-5.8.0\VTK\Graphics;D:\vtk-5.8.0\VTK\Filtering;D:\vtk-5.8.0\VTK-bin\Common;D:\vtk-5.8.0\VTK-bin\Rendering;%(AdditionalIncludeDirectories)
1.2 附加依赖项,位于项目属性->链接器->输入 ->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负责..\..\性质的内容,若想直接复制,请确保新建项目与拟拷配置的项目位于同一文件夹下):
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
..\..\VTK\bin\bin\Debug\vtkRendering.lib
..\..\VTK\bin\bin\Debug\vtkGraphics.lib
..\..\VTK\bin\bin\Debug\vtkImaging.lib
..\..\VTK\bin\bin\Debug\vtkFiltering.lib
..\..\VTK\bin\bin\Debug\vtkCommon.lib
..\..\VTK\bin\bin\Debug\vtksys.lib
ws2_32.lib
1.3
将D:\vtk-5.8.0\VTK-bin\bin\Debug这个文件夹选择此中所有的DLL 后缀的文件全部复制到c:\windows\system32 (调试时推荐),或者拷贝到VC项目可执行文件所在位置(安装到其他机器时拷贝)。
1.4 后右击Cone6,选择调试->启动新实例,看到Cane6的实例窗口
(可以修改
for (i = 0; i < 360; ++i)
中的360改更为大数值如7200 效果会稍微明显一点)