VS配置VTK5101Cmake28122.docx

上传人:b****6 文档编号:7317536 上传时间:2023-01-22 格式:DOCX 页数:10 大小:280.57KB
下载 相关 举报
VS配置VTK5101Cmake28122.docx_第1页
第1页 / 共10页
VS配置VTK5101Cmake28122.docx_第2页
第2页 / 共10页
VS配置VTK5101Cmake28122.docx_第3页
第3页 / 共10页
VS配置VTK5101Cmake28122.docx_第4页
第4页 / 共10页
VS配置VTK5101Cmake28122.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

VS配置VTK5101Cmake28122.docx

《VS配置VTK5101Cmake28122.docx》由会员分享,可在线阅读,更多相关《VS配置VTK5101Cmake28122.docx(10页珍藏版)》请在冰豆网上搜索。

VS配置VTK5101Cmake28122.docx

VS配置VTK5101Cmake28122

 VS2010配置VTK5.10.1Cmake2.8.12.2

2016年4月22日

基于:

VS2010安装配置vtkVTK5.10.1安装配置教程

VTK在VS2010下的安装方法

在win8.1,win10均成功,.netFramework是4.0。

希望大家按部就班,少走弯路,不要操之过急。

感谢原文作者的工作。

1.安装好VS2010

必须下载:

vtk-5.10.1.zip源程序

vtkdata-5.10.1.zip数据

cmake-2.8.12.2-win32-x86.zip

(vtk相关安装程序下载(官网):

http:

//vtk.org)

(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

  新建一个文件夹D:

\ProgramFiles\VTK\VTKbin\

3.解压cmake-2.8.12.2-win32-x86.zip,运行{解压目录}\bin\cmake-gui.exe,

设置soursecode目录为D:

\ProgramFiles\VTK\VTKsourcecode\,

build目录为D:

\ProgramFiles\VTK\VTKbin\

按configure按钮,选VisualStudio10编译器。

需要耐心等待,一般忽略其中的警告。

勾选Advanced再按configure,可以看到或者搜索到某项为:

vtk_use_guisupport,选择它,再按configure,选vtk_use_mfc,再configure,configure的次数是无所谓的。

vtk_data_root:

目的是告诉cmake,vtk需要的数据都在哪里,我们的数据在D:

ProgramFiles\VTK\VTKdata

cmake_install_prefix:

虽然网上说默认就好。

但是我安装时出了问题。

强烈建议该项的位置填VTK源程序和数据等文件的上一级文件的位置,即若vtk-5.10.1.zip解压到D:

\ProgramFiles\VTK\VTKsourcecode,则此处填D:

\ProgramFiles\VTK。

build_examples:

就是询问是否编译vtk中的例子,你在看这个教程,说明肯定是初次用VTK,建议选上。

build_shared_libs:

建议选On。

如果设置为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、Win32SampleMFC项目的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

此时,应该没有问题了。

右击vtkmfc项目,按“仅用于该项目”-“仅重新生成该项目”,这时\vtk\vtkbin\bin\Debug终于会有vtkMFC.lib等文件生成。

再同理操作vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC,最后一个可能失败,忽略。

若还是出现cannotfindvtkMFC.lib则是由于cmake阶段未勾选vtk_use_mfc,关闭当前所有窗口。

清空文件夹D:

\ProgramFiles\VTK\VTKbin\的内容,回到第3步。

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;

}

9.1项目属性->配置属性->VC++目录->库目录:

D:

\ProgramFiles\VTK\VTKbin\bin\debug

若出现无法找到vtkRendering.dll等错误,则是由于该环境变量未配置正确。

  

9.2项目属性->配置属性->VC++目录->包含目录 ,拷入入下述内容:

D:

\ProgramFiles\VTK\VTKbin;

D:

\ProgramFiles\VTK\VTKbin\bin;

D:

\ProgramFiles\VTK\VTKsourcecode\GenericFiltering;

D:

\ProgramFiles\VTK\VTKsourcecode\Common;

D:

\ProgramFiles\VTK\VTKsourcecode\IO;

D:

\ProgramFiles\VTK\VTKsourcecode\Filtering;

D:

\ProgramFiles\VTK\VTKsourcecode\Rendering;

D:

\ProgramFiles\VTK\VTKsourcecode\Graphics;

D:

\ProgramFiles\VTK\VTKsourcecode\VolumeRendering;

D:

\ProgramFiles\VTK\VTKsourcecode\Imaging;

D:

\ProgramFiles\VTK\VTKsourcecode\Hybrid;

D:

\ProgramFiles\VTK\VTKsourcecode\GUISupport;

D:

\ProgramFiles\VTK\VTKsourcecode\Utilities;

D:

\ProgramFiles\VTK\VTKbin\Utilities;

D:

\ProgramFiles\VTK\VTKsourcecode\Parallel;

D:

\ProgramFiles\VTK\VTKsourcecode\Widgets

( 注意:

网上很多配置方法在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

(建议把D:

\ProgramFiles\VTK\VTKbin\bin\debug中所有的lib文件都填进去)

9.4调试,运行,可以看到运行窗口。

像Cannotopenincludefile:

'vtkConeSource.h':

这样的错误都是上面三大步没走对或dll没拷到windows/system下造成的。

要建立新项目,必须重新配置三大步,因为那三步都是Projectsetting里的,新项目没有默认这些设置。

如果某个项目再提示缺什么lib或.h的话,再临时加上去就行了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1