以下内容,部分借鉴了网上的一个教程,对其中的不完善部分做了修改。有啥问题,可以留言。
1. 必须下载:
vtk-5.10.1.zip 源程序
vtkdata-5.10.1.zip 数据
(vtk相关安装程序下载:http://vtk.org)
cmake-2.8.2-win32-x86.zip
(cmake程序下载:http://www.cmake.org/HTML/Index.html)
2. 将 vtk-5.10.1.zip 解压到d:\VTK\VTKsourcecode, 将vtkdata-5.10.1.zip解压到d:\VTK\vtkdata
安装与配置VTK
1. 解压 cmake-2.8.2-win32-x86.zip,管理员身份运行{解压目录}\bin\cmake-gui.exe,设置sourse code目录为d:\VTK\VTKsourcecode,build目录为D:\VTK\VTKbin
按 configure 按钮,选Visual Studio 10编译器(这里即使是win7 64位的也建议不要选VS2010 W64,不然你就等着悲剧吧!!0XC000007B这个牛逼的错误等着你!!劳资装了4天都这样选的,MLGBD),然后cmake会描所需要的文件。
选中 Advanced 再按 configure,可以看到一个vtk_use_guisupport,选择它,再按 configure, 选vtk_use_mfc,再configure,configure的次数是无所谓的。
需要勾选的(按个人需要):
vtk_data_root,浏览到例子数据所在位置,如“d:\vtk\vtkdata”
build_examples:勾选上则编译例子,
build_testing: 勾选上则编译测试代码,也是例子
vtk_use_parallel:勾选(并行计算相关的,不做就不选)
build_shared_libs: 设置为on,将会多生成 dll 文件,这些dll需要拷到windows/system目录下。要是用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,要是用动态库编程, 即on时,应用程序必须找到动态库才能运行,但尺寸可以做得比较小。
所有项目会变成灰色后后可以点击 Generate,完成时会提示 Generating done,此时关闭cmake。
2. 用 vc++2010打开 D:\VTK\VTKbin\Utilities\MaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。
3. 若 build_shared_libs 选择On,把D:\VTK\VTKbin\bin\Debug里生成的vtksys.dll文件拷到windows/system目录下。或者打开VS2010的属性管理器(视图->其他窗口->属性管理器),双击任意“Microsoft.Cpp.Win32.user”,弹出属性页,在里面VC++目录的 Library Directories 中将bin文件夹中的Debug包括进去。
4. 打开D:\VTK\VTKbin目录下的VTK.sln,右键点击All_Build选择重新生成。
若build_shared_libs选择On,中途涉及MFC的示例会出错,
错误①
Link错误:
a.在Solution Explorer中分别找到vtkDLG、vtkMDI、vtkSDI这三个项目,
右键—>Properties—>Configuration Properties—>Linker—>Input—>在Additional Dependencies中添加..\..\..\..\..\bin\Debug\vtkIO.lib
b.再找到Win32SampleMFC这个项目,与以上类似,添加..\..\..\..\bin\Debug\vtkIO.lib这样,就为这些项目加入了vtkIO.lib库。
错误②
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个都是在{解压的vtk5.10.1的目录}\Examples\GUI\Win32\vtkMFC\ 下面,你可以搜索一下,共4个stdafx.h,都改
1个在{解压的vtk5.10.1的目录}\Examples\GUI\Win32下面
b.一个 vtkMFCWindow.cpp, 在{解压的vtk5.10.1的目录}\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
此时,应该没有问题了。
若出现cannot find vtkMFC.lib则是由于cmake阶段未勾选vtk_use_mfc
然后右击Cone6,选择调试->启动新实例,这时可以看到正确运行的程序了。(注:Cone6需要你CMAKE时勾选build_examples:)
新建项目的配置
1. 新建项目Test(控制台应用程序空项目),增加Test.cpp文件,用Cone6.cxx的文件内容覆盖Test.cpp的内容。
此时若出现无法找到vtkRendering.dll等错误,则是由于环境变量未配置正确。将bin文件夹下的debug路径加入Path,之后重启VS即可。
1.1 配置附加包含目录,位于项目属性->配置属性->c/c++/常规 的第一项,拷入入下述内容(具体可通过查看实例的附加包含目录):
D:/VTK/VTKbin;D:/VTK/VTKbin/Common;D:/VTK/VTKbin/Utilities;D:/VTK/VTKbin/VolumeRendering;D:/VTK/VTKbin/Rendering;D:/VTK/VTKbin/Charts;D:/VTK/VTKbin/Chemistry;D:/VTK/VTKbin/GUISupport/MFC;D:/VTK/VTKbin/Utilities/vtkalglib;D:/VTK/VTLsourcecode/Infovis;D:/VTK/VTLsourcecode/Geovis;D:/VTK/VTLsourcecode/Views;D:/VTK/VTLsourcecode/VolumeRendering;D:/VTK/VTLsourcecode/Hybrid;D:/VTK/VTLsourcecode/Widgets;D:/VTK/VTLsourcecode/Rendering;D:/VTK/VTLsourcecode/Charts;D:/VTK/VTLsourcecode/Chemistry;D:/VTK/VTLsourcecode/Rendering/Testing/Cxx;D:/VTK/VTLsourcecode/IO;D:/VTK/VTLsourcecode/Imaging;D:/VTK/VTLsourcecode/Graphics;D:/VTK/VTLsourcecode/GenericFiltering;D:/VTK/VTLsourcecode/Filtering;D:/VTK/VTLsourcecode/Common;D:/VTK/VTLsourcecode/Utilities;D:/VTK/VTLsourcecode/Common/Testing/Cxx;D:/VTK/VTKbin/Utilities/vtknetcdf;D:/VTK/VTLsourcecode/Utilities/vtknetcdf;D:/VTK/VTLsourcecode/Utilities/vtknetcdf/include;D:/VTK/VTKbin/Utilities/vtklibproj4;D:/VTK/VTLsourcecode/Utilities/vtklibproj4;D:/VTK/VTKbin/Utilities/DICOMParser;D:/VTK/VTLsourcecode/Utilities/DICOMParser;D:/VTK/VTKbin/Utilities/vtkfreetype/include;D:/VTK/VTLsourcecode/Utilities/vtkfreetype/include;D:/VTK/VTKbin/Utilities/LSDyna;D:/VTK/VTLsourcecode/Utilities/LSDyna;D:/VTK/VTKbin/Utilities/MaterialLibrary;D:/VTK/VTLsourcecode/Utilities/MaterialLibrary;D:/VTK/VTKbin/Utilities/vtkmetaio;D:/VTK/VTLsourcecode/Utilities/vtkmetaio;D:/VTK/VTKbin/Utilities/verdict;D:/VTK/VTLsourcecode/Utilities/verdict;D:/VTK/VTKbin/Utilities/vtkhdf5;D:/VTK/VTLsourcecode/Utilities/vtkhdf5;D:/VTK/VTKbin/Utilities/vtkhdf5/src;D:/VTK/VTLsourcecode/Utilities/vtkhdf5/src;D:/VTK/VTKbin/Utilities/vtkhdf5/hl/src;D:/VTK/VTLsourcecode/Utilities/vtkhdf5/hl/src;D:/VTK/VTLsourcecode/Utilities/utf8/source;D:/VTK/VTLsourcecode/GUISupport/MFC;D:/VTK/VTLsourcecode/Utilities/vtkalglib;D:/VTK/VTLsourcecode/Utilities/ftgl/src;D:/VTK/VTKbin/Utilities/ftgl;%(AdditionalIncludeDirectories)
1.2 附加依赖项,位于项目属性->链接器->输入 ->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负责..\..\性质的内容,若想直接复制,请确保新建项目与拟拷配置的项目位于同一文件夹下):
kernel32.lib
1.3 然后右击Cone6,选择调试->启动新实例,看到Cane6的实例窗口