VTK在VS下的安装方法.docx
《VTK在VS下的安装方法.docx》由会员分享,可在线阅读,更多相关《VTK在VS下的安装方法.docx(9页珍藏版)》请在冰豆网上搜索。
![VTK在VS下的安装方法.docx](https://file1.bdocx.com/fileroot1/2022-12/29/9b0dd3ea-00e7-4185-ad27-517f9288df1b/9b0dd3ea-00e7-4185-ad27-517f9288df1b1.gif)
VTK在VS下的安装方法
VS2010安装配置VTK
VTK5.10.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:
\ProgramFiles\VTK\VTKsourcecode,将vtkdata-5.10.1.zip解压到D:
\ProgramFiles\VTK\VTKdata
3.解压cmake-2.8.2-win32-x86.zip,运行{解压目录}\bin\cmake-gui.exe,设置soursecode目录为D:
\ProgramFiles\VTK\VTKsourcecode\,build目录为D:
\ProgramFiles\VTK\VTKbin\
按configure按钮,选VisualStudio10编译器(这里即使是win764位的也建议不要选VS2010W64,不然你就等着悲剧吧!
!
0XC000007B这个牛逼的错误等着你!
!
劳资装了4天都这样选的,MLGBD),然后cmake会描所需要的文件。
选中Advanced再按configure,可以看到一个vtk_use_guisupport,选择它,再按configure,选vtk_use_mfc,再configure,configure的次数是无所谓的。
•vtk_data_root:
目的是告诉cmake,vtk需要的数据都在哪里,我们的数据在
c:
/vtk/vtkdata/
(2)cmake_install_prefix:
虽然网上说默认就好。
但是我安装时出了问题。
强烈建议该项的位置填VTK源程序和数据等文件的上一级文件的位置,即若vtk-5.10.1.zip解压到D:
\ProgramFiles\VTK\VTKsourcecode,则此处填D:
\ProgramFiles\VTK。
build_examples:
就是询问是否编译vtk中的例子,你在看这个教程,说明肯定是初次用VTK,建议选上。
build_shared_libs:
如果设置为off,就只会生成lib文件,用于开发肯定是够了。
如果设置为on,将会多生成dll文件,这些dll需要拷到windows/system目录下。
如果用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,即on时,应用程序必须找到动态库才能运行,但尺寸可以做得比较小。
建议选On,我试过选OFF,所谓的静态编译,但之后新建一个项目时,还是会出现找不到文件的问题。
vtk_use_parallel:
对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认off
所有项目会变成灰色后后可以点击Generate,完成时会提示Generatingdone,此时关闭cmake。
4.用vc++2010打开D:
\ProgramFiles\VTK\VTKbin\Utilities\MaterialLibrary目录下的MaterialLibrary.sln文件,右键点击All_Build选择重新生成。
5.若build_shared_libs选择On,把D:
\ProgramFiles\VTK\VTKbin\bin\Debug里生成的vtksys.dll文件拷到windows/system目录下。
或者打开VS2010的属性管理器(视图->其他窗口->属性管理器),双击任意“Microsoft.Cpp.Win32.user”,弹出属性页,在里面VC++目录的LibraryDirectories中将bin文件夹中的Debug包括进去(建议两种方法都用)。
6.打开D:
\ProgramFiles\VTK\VTKbin目录下的VTK.sln,右键点击All_Build选择重新生成。
若build_shared_libs选择On,中途涉及MFC的示例会出错,
对应的解决办法为:
错误①
Link错误:
a.在SolutionExplorer中分别找到vtkDLG、vtkMDI、vtkSDI、vtkMFC这四个项目,右键—>Properties—>ConfigurationProperties—>Linker—>Input—>在AdditionalDependencies中添加..\..\..\..\..\bin\Debug\vtkIO.lib
b.再找到Win32SampleMFC这个项目,与以上类似地在AdditionalDependencies中添加..\..\..\..\bin\Debug\vtkIO.lib
这样,就为这些项目加入了vtkIO.lib库。
上述方法可能失效,可采用下面的方法在vtkDLG、vtkMDI、vtkSDI、vtkMFC、Win32SampleMF项目的CMaklist.txt中修改。
打开CMakelist.txt,在TARGET_LINK_LIBRARIES中添入vtkIO。
例如vtkSDI的CMakelist.txt中,TARGET_LINK_LIBRARIES(vtkSDIvtkMFC)应改为TARGET_LINK_LIBRARIES(vtkSDIvtkMFCvtkIO)。
其他的项目修改类似。
错误②
Thisfilerequires_WIN32_WINNTtobe#definedatleastto0x0403.Value0x0501orhigherisrecommended.
解决办法为:
找到五个工程:
vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC、vtkMFC
a.打开前四个工程源文件中的stdAfx.h,
在四个工程下的项中的.h文件中可以找到。
另外可以打开D:
\ProgramFiles\VTK\,利用文件搜索功能搜寻,找到后用VS2010打开修改(本人用后者,感觉较快)。
b.在vtkMFC工程下的中,找到vtkMFCWindow.cpp打开修改
4个stdafx.h如下修改
//Modifythefollowingdefinesifyouhavetotargetaplatformpriortotheonesspecifiedbelow.
//RefertoMSDNforthelatestinfooncorrespondingvaluesfordifferentplatforms.
#ifndefWINVER //AllowuseoffeaturesspecifictoWindows95andWindowsNT4orlater.
#defineWINVER 0x0601 //ChangethistotheappropriatevaluetotargetWindows98andWindows2000orlater.
#endif
#ifndef_WIN32_WINNT //AllowuseoffeaturesspecifictoWindowsNT4orlater.
#define_WIN32_WINNT 0x0601 //ChangethistotheappropriatevaluetotargetWindows98andWindows2000orlater.
#endif
#if_MSC_VER>=1300
#ifndef_WIN32_WINDOWS //AllowuseoffeaturesspecifictoWindows98orlater.
#define_WIN32_WINDOWS 0x0601 //ChangethistotheappropriatevaluetotargetWindowsMeorlater.
#endif
#endif
#ifndef_WIN32_IE //AllowuseoffeaturesspecifictoIE4.0orlater.
#define_WIN32_IE 0x0800 //ChangethistotheappropriatevaluetotargetIE5.0orlater.
#endif
红字对应的是win7版本。
vtkMFCWindow.cpp中的部分代码:
//AllowuseoffeaturesspecifictoWindows95andWindowsNT4orlater.
#ifndefWINVER
#defineWINVER 0x0601
#endif
//Define_WIN32_WINNTand_WIN32_IEtoavoidthefollowingerrorwithVisual
//Studio2008SP1:
//"C:
\ProgramFiles\MicrosoftSDKs\Windows\v6.0A\include\sdkddkver.h(217):
//fatalerrorC1189:
#error:
_WIN32_WINNTsettingsconflictswith_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
此时,应该没有问题了。
若出现cannotfindvtkMFC.lib则是由于cmake阶段未勾选vtk_use_mfc
7.将D:
\ProgramFiles\VTK\VTKbin\bin\debug这个文件夹选择此中所有的DLL 后缀的文件全部复制到c:
\windows\system32 (调试时推荐),或者拷贝到VC项目可执行文件所在位置(安装到其他机器时拷贝)。
8. 用VS2010打开D:
\ProgramFiles\VTK\VTKbin\Examples\All\VTKExamples.sln,选择Cone项目,右键setasactiveproject(VC不熟的人一定要记得这个!
),然后
选择调试->启动新实例,这时可以看到正确运行的程序了。
9.新建项目Test(控制台应用程序空项目),增加Test.cpp文件,用Cone6.cxx的文件内容覆盖Test.cpp的内容。
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
int main()
{
vtkConeSource *cone = vtkConeSource:
:
New();
cone->SetHeight( 3.0 );
cone->SetRadius( 1.0 );
cone->SetResolution( 10 );
vtkPolyDataMapper *coneMapper = vtkPolyDataMapper:
:
New();
coneMapper->SetInputConnection( cone->GetOutputPort() );
vtkActor *coneActor = vtkActor:
:
New();
coneActor->SetMapper( coneMapper );
vtkRenderer *ren1= vtkRenderer:
:
New();
ren1->AddActor( coneActor );
ren1->SetBackground( 0.1, 0.2, 0.4 );
vtkRenderWindow *renWin = vtkRenderWindow:
:
New();
renWin->AddRenderer( ren1 );
renWin->SetSize( 300, 300 );
int i;
for (i = 0; i < 360; ++i)
{
renWin->Render();
ren1->GetActiveCamera()->Azimuth( i );
}
cone->Delete();
coneMapper->Delete();
coneActor->Delete();
ren1->Delete();
renWin->Delete();
return 0;
}
.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\include\vtk-5.10;%(AdditionalIncludeDirectories)
$(QTDIR)\lib;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\lib\vtk-5.10;%(AdditionalLibraryDirectories)
qtmaind.lib;QtCored4.lib;QtGuid4.lib;opengl32.lib;pcl_kdtree_debug.lib;pcl_io_debug.lib;pcl_search_debug.lib;pcl_segmentation_debug.lib;pcl_apps_debug.lib;pcl_features_debug.lib;pcl_filters_debug.lib;pcl_visualization_debug.lib;pcl_common_debug.lib;flann_cpp_s-gd.lib;libboost_system-vc100-mt-gd-1_47.lib;libboost_filesystem-vc100-mt-gd-1_47.lib;libboost_thread-vc100-mt-gd-1_47.lib;libboost_date_time-vc100-mt-gd-1_47.lib;libboost_iostreams-vc100-mt-gd-1_47.lib;Cosmo.lib;LSDyna.lib;MapReduceMPI.lib;mpistubs.lib;QVTK.lib;VPIC.lib;vtkalglib.lib;vtkcharts.lib;vtkCommon.lib;vtkDICOMParser.lib;vtkexoIIc.lib;vtkexpat.lib;vtkFiltering.lib;vtkfreetype.lib;vtkftgl.lib;vtkGenericFiltering.lib;vtkGeovis.lib;vtkGraphics.lib;vtkhdf5.lib;vtkhdf5_hl.lib;vtkHybrid.lib;vtkImaging.lib;vtkInfovis.lib;vtkIO.lib;vtkjpeg.lib;vtklibxml2.lib;vtkmetaio.lib;vtkMFC.lib;vtkNetCDF.lib;vtkNetCDF_cxx.lib;vtkParallel.lib;vtkpng.lib;vtkproj4.lib;vtkQtChart.lib;vtkRendering.lib;vtksqlite.lib;vtksys.lib;vtktiff.lib;vtkverdict.lib;vtkViews.lib;vtkVolumeRendering.lib;vtkWidgets.lib;vtkzlib.lib;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTKBIN\bin\Debug\QVTKWidgetPlugin.lib;%(AdditionalDependencies)
9.2项目属性->配置属性->VC++目录->包含目录 ,拷入入下述内容:
D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTKBIN;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTKBIN\bin;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\GenericFiltering;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Common;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\IO;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Filtering;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Rendering;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Graphics;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\VolumeRendering;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Imaging;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Hybrid;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\GUISupport;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Utilities;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTKBIN\Utilities;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Parallel;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTK\Widgets;D:
\ProgramFiles\PCL1.6.0\3rdParty\Boost\include;D:
\ProgramFiles\PCL1.6.0\3rdParty\Eigen\include;D:
\ProgramFiles\PCL1.6.0\3rdParty\FLANN\include;D:
\ProgramFiles\PCL1.6.0\3rdParty\Qhull\include;D:
\ProgramFiles\OpenNI\Include;D:
\ProgramFiles\PCL1.6.0\include\pcl-1.6;D:
\Qt\4.8.0\include;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\include\vtk-5.10;$(IncludePath)
9.1项目属性->配置属性->VC++目录->库目录:
D:
\ProgramFiles\VTK\VTKbin\bin\debug
若出现无法找到vtkRendering.dll等错误,则是由于该环境变量未配置正确
D:
\ProgramFiles\PCL1.6.0\3rdParty\Boost\lib;D:
\ProgramFiles\PCL1.6.0\3rdParty\Eigen\bin;D:
\ProgramFiles\PCL1.6.0\3rdParty\FLANN\lib;D:
\ProgramFiles\PCL1.6.0\3rdParty\Qhull\lib;D:
\ProgramFiles\PCL1.6.0\lib;D:
\ProgramFiles\OpenNI\Lib;D:
\Qt\4.8.0\lib;D:
\ProgramFiles\PCL1.6.0\3rdParty\VTK\VTKBIN\bin\Release;$(LibraryPath)
( 注意:
网上很多配置方法在Additional include directories(附加包含路径)没有添加D:
\ProgramFiles\VTK\VTKbin;D:
\ProgramFiles\VTK\VTKbin\bin; 结果出现错误提示:
无法打开包括文件:
“vtkConfigure.h”:
No such file or directory)
9.3位于项目属性->链接器->输入->附加依赖项 ,拷入下述内容(下面有些lib文件已经被附加进去了,就不需要再添加进去):
opengl32.libkernel32.libuser32.libgdi32.libwinspool.libcomdlg32.libadvapi32.libshell32.libole32.liboleaut32.libuuid.libodbc32.libvtkCommon.libvtkDICOMParser.libvtkexoIIc.libvtkexpat.libvtkFiltering.libvtkfreetype.libvtkftgl.libvtkGenericFiltering.libvtkGraphics.libvtkHybrid.libvtkImaging.libvtkIO.libvtkjpeg.lib vtkNetCDF.libvtkpng.libvtkRendering.libvtksys.libvtktiff.libvtkVolumeRendering.libvtkWidgets.libvtkzlib.lib
qtmaind.lib
QtCored4.lib
QtGuid4.lib
opengl32.lib
pcl_kdtree_debug.lib
pcl_io_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_apps_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl