VTK6 + VS2008 in(win7 32bit or 64 bit)(qt4.8已完成配置!)

时间:2021-09-14 18:41:25

一、VTK安装环境
      1.在win7平台( 32位或64位平台下均可,只有一个步骤不同,当然如果你是64位系统使用32位vtk完全可以!
      2.已经安装vs2008( 并且已经安装补丁sp1(这是安装qt-addin的前提,所以如果安装好了qt一定是有的)
      3.已经在vs2008中集成了qt。(你也可以不用qt,这一条就可以忽略!)
      有很多人在郁闷64位的win7怎么配置,其是和32位完全一样,全部都用32位没有问题。我请自试验过,以下的文件也 都是32位版本的。
      注意:如果是64位系统,则需要安装X64编译器,X64编译器在安装vs2008时默认是不安装的。如果没有,需要再安装一下。
    
        最后强烈建议:无论系统是32bit还有64,都使用32位的vtk。因为64可能出现各种问题!
二、VTK安装
1、下载
      VTk官方下载页面: http://www.vtk.org/VTK/resources/software.html#latest
      我下载的是 vtk-6.0.0.zip(源码)、 vtkdata-6.0.0.zip(数据)。
2、编译
      2.1下载 cmake 3.0 (请直接百度cmake进入官网下载(32bit版本即可)),并安装。它是用来完成VTK编译的。
      2.2 解压:vtk-6.0.0.zip       至D:\kit\VTK\src  
           解压:vtkdata-6.0.0.zip至D:\kit\VTK\data
           建立目录:                        D:\kit\VTK\bin
           建立目录:                        D:\kit\VTK\install
        (注意解压完成后,src和data下面应该有很多文件,而不是只有一个文件夹,bin和install是空的)
      2.3 运行安装后的,CMake程序
           选择source code目录为   D:\kit\VTK\src
           选择build后的bin目录为  D:\kit\VTK\bin
            点击Configure按钮,会提示你选择编译器,我们选择visual studio 9 2008(下面的选项为第一个)。点击 finish(此处是32和64位系统唯一的差异:64位请选择(visual studio 9 2008 win64 ),前提是安装了X64  不然会出错!).然后Cmake会扫描一下它需要的文件,等它停下来后,我们就可以修改CMake的参数选项了。(红色代表新扫面到的文件,而不是错误文件!)
(此时可能失败显示文件非法什么的,关闭vs,cmake,删除 D:\kit\VTK\bin中的内容,多试几次,我就是来了几次就成功了)。
 
     2.4 选择CMake的参数(即打勾)
    不需要Advanced选项:
  1.     build_examples    :关闭,需要使用后期再编译。
  2.     BUILD_SHARED_LIBS : 打开,可以生成动态链接库dll。后期需要配置环境变量。OFF的话,会生成静态链接库lib,也可以在项目中使用。
  3.     VTK_Group_Qt  :打开,支持Qt界面。
  4.     CMAKE_INSTALL_PREFIX = D:\kit\VTK\install  :(要修改,最好不要保持默认!
  5. 其它保持默认
 
     然后, 再次点击Configure按钮,重新让CMake扫描一下配置文件,会发现都变成白色,如果还有红色,可以忽略,或者选上再第三次点击 Configure按钮
    
      最后再扫描结束后,点击Generate按钮。生成VTK的VS项目。 
2.5 打开VTK的VS项目   D:\kit\VTK\bin\VTK.sln
 
首先选择 Release 模式:
  1. 选择ALL_BUILD项目,生成。
      大概30分钟后编译成功。
 
      2、再选择INSTALL项目(即右键设为启动项),生成。
 
首先选择 Debug 模式:
  1. 选择ALL_BUILD项目,生成。
      大概30分钟后编译成功。
 
      2、再选择INSTALL项目 (即右键设为启动项) ,生成。
 
注: 顺序一定要正确先ReleaseDebug
 
3、配置VTK
 3.1将VTK集成至Qt中,作为插件
注1、要是想在Qt中引用VTK窗口插件,需要VTK的 Release模式编译生成的QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib。
 
注2、将Release模式下生成的QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib拷贝到Qt安装目录中 \plugins\designer目录下,这样就可在QtDesigner中看到VTK的插件。(这两个文件可以直接在D:\kit\VTK\bin目录下搜索,搜索结果见注3)
 
注3、搜索到了两个文件:QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib ,你会发现都有两个版本,请查看他们的生成时间,首先,必须确保是同时生成的。因为,先生成的Release版本,后生成的Debug版本,所以这两个文件的修改时间都比较早。(Qt中VTK窗口插件是需要这两个文件的Release版本)
 
如果打开Qt Designer出现问题,一定是:这两个文件没有选择正确。
 
如果出现QVTK 插件则成功
 
3.2VC项目VTK的环境配置

有很多中配置方式,这里我就介绍一个最简单最通用的:

首先,先别急着配置,我们看看通过cmake都干了点什么吧:

在cmake中我们一共提到两个目录:

                        第一个:D:\kit\VTK\bin 为cmake的build后的目标目录

                              第二个:CMAKE_INSTALL_PREFIX =D:\kit\VTK\install 

        请注意斜体的两个斜体的单词,一个是构建(build)!一个是安装(install)!

        没错,我们用cmake构建了一个安装程序!然后在vs中安装(姑且这么理解)!

        所以我们最后的东西都在 D:\kit\VTK\install 中!(至于在vs中生成了那些东西都是什么,我也管不着!除了在D:\kit\VTK\bin目录下查找qt的插件之外

 

现在开始配置吧:

1.打开vs,新建一个QT项目:

2.工具-》选项-》项目和解决方案-》vc++目录:

        在“包含文件”中添加:D:/kit/VTK/install/include

        在“库文件”中添加:D:/kit/VTK/install/lib

        (注意,include和lib文件夹下面应该全是.h 和 .lib文件,有时可能是多了一级目录即.../include/vtk/.. 需要注意!

3.请把D:/kit/VTK/install/bin添加到环境变量;

4.需要在项目单击右键-》属性-》配置属性-》连接器-》输入-》附加依赖项 中加入XXX-06.lib!(使用cmake生成的项目不需要添加,如果用vs2008生成win32控制台程序或qt程序来编写vtk则需要(因为vtk项目一般用cmake来管理!cmake会自动搜集,如果使用cmake甚至上面两条都不需要!不过新手还是慢慢来吧!))

(看到下面一堆要一条一条的添加是不是晕了,没关系,重新打开刚才D:\kit\VTK\bin\VTK.sln随便选择一个项目右键-》属性-》配置属性-》连接器-》输入-》附加依赖项,把里面的东西先复制出来,然后去掉文件名前面的路径(因为具体的路径已经在上述第二条就解决了),这就是你要的东西了,注意:如果是XXX-lib没有6.0 的话是错误的,需要重新找一个项目,注意一共有一百多项,所以你找的项目可能只添加了几项!拷贝到新的项目可能需要的更多,所以也会遇到无法解析的外部符号的错误)!

vtkalglib-6.0.lib

vtkChartsCore-6.0.lib

vtkCommonColor-6.0.lib

vtkCommonDataModel-6.0.lib

vtkCommonMath-6.0.lib

vtkCommonCore-6.0.lib

vtksys-6.0.lib

vtkCommonMisc-6.0.lib

vtkCommonSystem-6.0.lib

vtkCommonTransforms-6.0.lib

vtkInfovisCore-6.0.lib

vtkFiltersExtraction-6.0.lib

vtkCommonExecutionModel-6.0.lib

vtkFiltersCore-6.0.lib

vtkFiltersGeneral-6.0.lib

vtkCommonComputationalGeometry-6.0.lib

vtkFiltersStatistics-6.0.lib

vtkImagingFourier-6.0.lib

vtkImagingCore-6.0.lib

vtkRenderingContext2D-6.0.lib

vtkRenderingCore-6.0.lib

vtkFiltersGeometry-6.0.lib

vtkFiltersSources-6.0.lib

vtkIOImage-6.0.lib

vtkDICOMParser-6.0.lib

vtkIOCore-6.0.lib

。。。

 

总结:我们发现除了插件,我们其实一共只配置了三种文件的目录:.dll (动态链接库文件) 、.lib(静态链接库文件)、.h(头文件),而配置方法其实有很多。

我的建议:dll文件(一般在bin目录下):直接将bin目录添加至系统环境变量(不会的请自行百度);

               lib文件(一般在lib目录下):通过“工具-》选项-》项目和解决方案-》vc++目录”的方式添加;

            h文件(一般在include目录下):同上

根据我的建议你会发现opengl、opencv等等这些基本上全部都是这样的配置方式,而cmake的使用方式也是这样。当然还有其他很多配置方法,不过这样即不会更改系统目录,也不需要来回移动文件。(但是opengl和opengcv不需要配置项目依赖,我也不知道为什么!)

 

附录1:很多人安装不成功,但是安装的东西影响了后来的重新安装;所以这里介绍如何把环境恢复成初试状态!

        1.清空目录D:\kit\VTK\install

          2.清空目录D:\kit\VTK\bin 中的全部内容!(注:查看隐藏文件,你会发现一个vtk.suo的文件,一并删除!)

          3.删除环境变量:D:\kit\VTK\install\bin

        4.进入vs“工具-》选项-》项目和解决方案-》vc++目录”

删除“包含文件”中的条目:D:\kit\VTK\install\include

删除“库文件”中的条目:D:\kit\VTK\install\lib

        5.清除工程中的依赖项;

        6.此时可以用cmake重新生了;

    

附录2:这里记录下可能产生的错误和产生错误的原因(以下为win32命令行运行方式):

    1.运行项目时,弹出错误对话框,提示缺少XXX.dll  : 没有被指环境变量;

    2.运行项目时,输出窗口显示,无法解析的外部符号:没有配置lib目录或没有把全部的lib加入项目依赖中;
    3.运行项目时,提示无法找到文件XX.lib   :    配置了项目依赖,但是没有配置“库文件”中的条目;

    4.要注意运行时,是Debug还是release模式,因为项目依赖是两个分别配置的。所以如果你全部配置是正确的,但是用Release模式运行,就会出现3中的错误。

    5.项目依赖需要每个项目都配置一次!

    6.最神奇,但是国内网站几乎找不到解决方案的问题 (使用CMAKE生成项目不存在此问题):

        “读取位置。。。发生访问冲突。。”        

       这个问题只需要,在你的每一个代码文件最前面两行添加如下代码:

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)

#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

具体原因见:http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Factories_now_require_defines

 

    7.通过cmake生成了解决方案,运行时如果说缺少QVTK.lib请替换这个项目中的附加依赖项(所有和vtk有关的项,还可能有Qt和opengl等是需要保留的。),见配置过程!

     

附录3:英文配置教程:http://www.vtk.org/Wiki/VTK/Configure_and_Build

 

   本文少部分内容来自网上,如需修改请告知!楼主花了大量的时间验证和修改,转载请注明出处。