zoukankan      html  css  js  c++  java
  • vtk安装与配置(VS2010+vtk-5.8.0)

          最近做用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.0VTK, 将vtkdata-5.10.1.zip解压到D:vtk-5.8.0vtkdata

    3、 解压 cmake-2.8.2 win32-x86.zip,运行{解压目录}incmake-gui.exe,设置sourse code目录为D:vtk-5.8.0VTK,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.0VTK-binUtilitiesMaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。

     

    5、打开D:vtk-5.8.0VTK-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,查找所有引用,将查找出的文件中的4stdafx.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.0VTKExamplesGUIWin32vtkMFC 下面,你可以搜索一下,共4个stdafx.h,都改

     

    1个在D:vtk-5.8.0VTKExamplesGUIWin32SampleMFC下面

     

    b.一个 vtkMFCWindow.cpp, 在D:vtk-5.8.0VTKGUISupportMFC

     

     

    // 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 FilesMicrosoft SDKsWindowsv6.0Aincludesdkddkver.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.0VTK;D:vtk-5.8.0VTKCommon;D:vtk-5.8.0VTKUtilities;D:vtk-5.8.0VTKVolumeRendering;D:vtk-5.8.0VTKGraphics;D:vtk-5.8.0VTKFiltering;D:vtk-5.8.0VTK-binCommon;D:vtk-5.8.0VTK-binRendering;%(AdditionalIncludeDirectories)

     

    1.2 附加依赖项,位于项目属性->链接器->输入 ->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负责....性质的内容,若想直接复制,请确保新建项目与拟拷配置的项目位于同一文件夹下):

     

    kernel32.lib

     

    user32.lib

     

    gdi32.lib

     

    winspool.lib

     

    shell32.lib

     

    ole32.lib

     

    oleaut32.lib

     

    uuid.lib

     

    comdlg32.lib

     

    advapi32.lib

     

    ....VTKininDebugvtkRendering.lib

     

    ....VTKininDebugvtkGraphics.lib

     

    ....VTKininDebugvtkImaging.lib

     

    ....VTKininDebugvtkFiltering.lib

     

    ....VTKininDebugvtkCommon.lib

     

    ....VTKininDebugvtksys.lib

     

    ws2_32.lib

     

     

    1.3

     

    将D:vtk-5.8.0VTK-bininDebug这个文件夹选择此中所有的DLL 后缀的文件全部复制到c:windowssystem32 (调试时推荐),或者拷贝到VC项目可执行文件所在位置(安装到其他机器时拷贝)。

     

    1.4    后右击Cone6,选择调试->启动新实例,看到Cane6的实例窗口

     

    (可以修改

     

      for (i = 0; i < 360; ++i)

     

    中的360改更为大数值如7200 效果会稍微明显一点)

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    find 用法
    linux 查看链接库的版本
    虚函数重载(overwrite) 继承覆盖问题
    将iso mount 到nfs 目录问题
    centos 下使用 pytesseract 识别文字
    nginx 报错Malformed HTTP request line, git 报错fatal: git-write-tree: error building trees
    nfs 支持ipv6
    数位操作
    二分图(最小顶点覆盖 最大匹配 最大独立集 )
    欧几里得算法
  • 原文地址:https://www.cnblogs.com/Akunwjy/p/VTK.html
Copyright © 2011-2022 走看看