《PCL点云库学习&VS2010(X64)》Part 3 CMake2.8.2+VTK5.10.1+VS2010 64bit

来源:互联网 发布:锐捷网络云课堂 编辑:程序博客网 时间:2024/05/05 18:17

Part 3 CMake2.8.2+VTK5.10.1+VS2010 64bit                                                                                                

一、VTK编译与配置

1、准备工作:资源下载
vtk-5.10.1.zip 源程序
vtkdata-5.10.1.zip 数据

(vtk相关安装程序下载:http://vtk.org
cmake-2.8.2-win32-x86.zip
(cmake程序下载:https://cmake.org/files/v2.8/cmake-2.8.0-win32-x86.zip)


2、解压源文件

vtk-5.10.1.zip 解压到D:\VTK\vtk-5.10.1

vtkdata-5.10.1.zip解压到D:\VTK\vtkdata-5.10.1

:没有VTK文件夹的自己新建一个


3、安装与配置

1). 解压 cmake-2.8.2-win32-x86.zip,管理员身份运行{解压目录}\bin\cmake-gui.exe,

2)设置目录:

sourse code目录为d:\VTK\VTKsourcecode;

build目录为D:\VTK\VTKbin。

3)按 configure 按钮,选Visual Studio 10编译器(这里即使是win7 64位的也建议不要选VS2010 W64),然后cmake会描所需要的文件。
4)等绿色进度条跑完,再选中 Advanced ,可以看到一个vtk_use_guisupport,选择它,按 configure; 

5)选vtk_use_mfc按 configure

:configure的次数是无所谓的,但是每次都要等configure结束后在选要选择的选项。


需要勾选的(按个人需要):

vtk_data_root,浏览到例子数据所在位置,如“d:\vtk\vtkdata”,一般默认的是对的

build_shared_libs: 勾选

build_testing: 勾选

vtk_use_guisupport

vtk_use_mfc

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


4、在VS2010中配置

 1) 用 VS2010打开D:\VTK\VTKbin\Utilities\MaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成

 2)  若 build_shared_libs 勾选了,把D:\VTK\VTKbin\bin\Debug里生成的vtksys.dll文件拷到C:\Windows\SysWOW64目录下。(或者打开VS2010的属性管理器(视图->其他窗口->属性管理器),双击任意“Microsoft.Cpp.Win32.user”,弹出属性页,在里面VC++目录的 Library Directories 中将bin文件夹中的Debug包括进去。)

 3)打开D:\VTK\VTKbin目录下的VTK.sln,右键点击All_Build选择重新生成
若build_shared_libs选择On,中途涉及MFC的示例会出错。

 4)

Link错误:
(1).在Solution Explorer中分别找到vtkDLG、vtkMDI、vtkSDI这三个项目,如果找不到vtkDLG、vtkMDI、vtkSDI这三个项就忽略掉。
右键—>Properties—>Configuration Properties—>Linker—>Input—>在Additional Dependencies中添加..\..\..\..\..\bin\Debug\vtkIO.lib
(2).再找到Win32SampleMFC这个项目,与以上类似,添加..\..\..\..\bin\Debug\vtkIO.lib这样,就为这些项目加入了vtkIO.lib库。如果找不到就忽略此项。


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

注:如果找不到vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC就忽略掉,但是vtkMFC是肯定有的,必须要改
(1).打开前四个工程源文件中的stdAfx.h,
如果找不到,则打开<资源文件>中的stdAfx.cpp,打开找到其中#include "stdAfx.h" ,右击:<打开"stdAfx.h">
(2).打开vtkMFC工程的vtkMFCWindow.cpp,按如下方法修改
(注:

4个stdafx.h
vtkDLG、vtkMDI、vtkSDI{解压的vtk5.10.1的目录}\Examples\GUI\Win32\vtkMFC\下面,你可以搜索一下,共4个stdafx.h,都需要改


Win32SampleMFC{解压的vtk5.10.1的目录}\VTK\vtk-5.10.1\Examples\GUI\Win32下面

 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 <span style="color:#ff0000;">0x0601</span> // 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 <span style="color:#ff0000;">0x0601</span> // 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 <span style="color:#ff0000;">0x0601</span> // 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 <span style="color:#ff0000;">0x0800</span> // 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 <span style="color:#ff0000;">0x0601</span>#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 <span style="color:#ff0000;">0x0601</span> // =_WIN32_WINNT_NT4#endif#ifndef _WIN32_IE#define _WIN32_IE <span style="color:#ff0000;">0x0800</span> //=_WIN32_IE_IE60SP1#endif

此时,重新点击在生成,编译结束后就基本上没有错误了。

编译结果如下图:



二、VTK调试

1. 新建项目VTKTest(控制台应用程序、空项目),新建VTKTest.cpp文件,

D:\VTK\vtk-5.10.1\Examples\Tutorial\Step6中找到Cone6.cxx的文件,打开该文件,复制粘贴到VTKTest.cpp中。

注:此时若出现无法找到vtkRendering.dll等错误,则是由于环境变量未配置正确。将bin文件夹下的debug路径加入Path,之后重启VS即可。或者复制到项目文件夹中也是可以的。


2.配置附加包含目录,位于项目属性->配置属性->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/vtk-5.10.1/Infovis;D:/VTK/vtk-5.10.1/Geovis;D:/VTK/vtk-5.10.1/Views;D:/VTK/vtk-5.10.1/VolumeRendering;D:/VTK/vtk-5.10.1/Hybrid;D:/VTK/vtk-5.10.1/Widgets;D:/VTK/vtk-5.10.1/Rendering;D:/VTK/vtk-5.10.1/Charts;D:/VTK/vtk-5.10.1/Chemistry;D:/VTK/vtk-5.10.1/Rendering/Testing/Cxx;D:/VTK/vtk-5.10.1/IO;D:/VTK/vtk-5.10.1/Imaging;D:/VTK/vtk-5.10.1/Graphics;D:/VTK/vtk-5.10.1/GenericFiltering;D:/VTK/vtk-5.10.1/Filtering;D:/VTK/vtk-5.10.1/Common;D:/VTK/vtk-5.10.1/Utilities;D:/VTK/vtk-5.10.1/Common/Testing/Cxx;D:/VTK/VTKbin/Utilities/vtknetcdf;D:/VTK/vtk-5.10.1/Utilities/vtknetcdf;D:/VTK/vtk-5.10.1/Utilities/vtknetcdf/include;D:/VTK/VTKbin/Utilities/vtklibproj4;D:/VTK/vtk-5.10.1/Utilities/vtklibproj4;D:/VTK/VTKbin/Utilities/DICOMParser;D:/VTK/vtk-5.10.1/Utilities/DICOMParser;D:/VTK/VTKbin/Utilities/vtkfreetype/include;D:/VTK/vtk-5.10.1/Utilities/vtkfreetype/include;D:/VTK/VTKbin/Utilities/LSDyna;D:/VTK/vtk-5.10.1/Utilities/LSDyna;D:/VTK/VTKbin/Utilities/MaterialLibrary;D:/VTK/vtk-5.10.1/Utilities/MaterialLibrary;D:/VTK/VTKbin/Utilities/vtkmetaio;D:/VTK/vtk-5.10.1/Utilities/vtkmetaio;D:/VTK/VTKbin/Utilities/verdict;D:/VTK/vtk-5.10.1/Utilities/verdict;D:/VTK/VTKbin/Utilities/vtkhdf5;D:/VTK/vtk-5.10.1/Utilities/vtkhdf5;D:/VTK/VTKbin/Utilities/vtkhdf5/src;D:/VTK/vtk-5.10.1/Utilities/vtkhdf5/src;D:/VTK/VTKbin/Utilities/vtkhdf5/hl/src;D:/VTK/vtk-5.10.1/Utilities/vtkhdf5/hl/src;D:/VTK/vtk-5.10.1/Utilities/utf8/source;D:/VTK/vtk-5.10.1/GUISupport/MFC;D:/VTK/vtk-5.10.1/Utilities/vtkalglib;D:/VTK/vtk-5.10.1/Utilities/ftgl/src;D:/VTK/VTKbin/Utilities/ftgl;%(AdditionalIncludeDirectories)


3.附加依赖项,位于项目属性->链接器->输入 ->附加依赖项->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负制..\..\路径的内容,若想直接复制,请确保路径名称和下面列出的路径一致的):
user32.libwinspool.libshell32.libole32.liboleaut32.libuuid.libcomdlg32.libws2_32.libD:\VTK\VTKbin\bin\Debug\vtkWidgets.libD:\VTK\VTKbin\bin\Debug\vtkHybrid.libD:\VTK\VTKbin\bin\Debug\vtkVolumeRendering.libD:\VTK\VTKbin\bin\Debug\vtkRendering.libD:\VTK\VTKbin\bin\Debug\vtkGraphics.libD:\VTK\VTKbin\bin\Debug\vtkImaging.libD:\VTK\VTKbin\bin\Debug\vtkIO.libD:\VTK\VTKbin\bin\Debug\vtkFiltering.libD:\VTK\VTKbin\bin\Debug\vtkCommon.libD:\VTK\VTKbin\bin\Debug\vtksys.lib


4.编译运行,如果有提示缺少dll文件,那么直接把编译好的D:\VTK\VTKbin\bin\Debug下的dll文件拷贝到项目文件中再运行:





0 0
原创粉丝点击