VTK配置总结

搞了一下午+一晚上,总算搞定。

首先,pdf上的方法是对的。但我不知道为什么VTK5.6会有12个错误?

错误如下:http://www.cdash.org/CDash/iphone/buildsummary.php?buildid=654757&date=2010-07-03#loginForm

还望今后能够解决。

 

改用vtk5.4.2成功。但也要注意一个问题:从网上搜索得之:

 

 今天遇到了一个难题,安装VTK的时候,选择VTK_USE_GUISUPPORT和VTK_USE_MFC为on后,由Cmake生成的vtk.sln无法正确编译通过,遇到一个冲突:C:/Program Files/Microsoft SDKs/Windows/v6.0A/include/sdkddkver.h(217) : fatal error C1189:#error :  _WIN32_WINNT settings conflicts with _WIN32_IE setting,这个错误刚好出现在VTKMFC这个项目中,说是windowsNT什么设置问题,看不太懂。难道是没有安装vtk-5.2.1-win32.exe?装了之后运行依然不通,咋回事呢?

     在网上down了一个晚上,看看qq新闻,又bananacast了一下,最终找到一位仁兄的解决方案:

_WIN32_WINNT 与 _WIN32_IE 设置冲突

 _WIN32_WINNT 与 _WIN32_IE设置不兼容会导致如下C1189致命错误:

StdAfx.cpp
c:/program files/microsoft sdks/windows/v6.0a/include/sdkddkver.h(217) : fatal error C1189:#error :  _WIN32_WINNT settings conflicts with _WIN32_IE setting

StdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。产生这个错误的原因是原因是_WIN32_WINNT的版本定义太老,老的VC代码对_WIN32_WINNT的典型设置是:

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif

0x0400相对于VS2008所带的Plarform. SDK(在文件sdkddkver.h中)中_WIN32_IE的定义来说太老了,导致不兼容,可以将其改成0x0501或更高的版本避免这个问题,如下所示:

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif

也可以将这三行_WIN32_WINNT定义删除,这样就会使用Plarform. SDK中的_WIN32_WINNT定义,自然就不存在不兼容问题了。不过出于对老版本VC的兼容考虑(毕竟以后可能还要使用VC6编译代码),最好这样修改:

#if _MSC_VER <= 1200 // MFC 6.0 or earlier
    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0400
    #endif
#endif

       大侠果然是大侠,看上去很深奥的一个错误,原来是我用的编译器(VS 2008)的问题,那么到底是哪个文件产生的这个错误呢?vtkMFCWindow.cpp中?因为这个错误的前一个编译文件就是它,我找了下,在这个文件中也就只有一段程序:

       #ifndef WINVER    // Allow use of features specific to Windows 95 and Windows NT 4 or later.
       #define WINVER 0x0400
       #endif

有此嫌疑,按照那位大侠的思路,我把0x0400换成了0x0501,然后保存,源文件居然写保护,没关系,俺直接覆盖它!再打开VTKMFC这个项目,编译!通过!ITK进行日志 - 简单一点 - 漫步的博客。我又改回去,哈哈,又出现这个错误,ok!问题就在这里,今晚收工!

 

 

http://blog.19lou.com/12003198/viewspace-2703839#xspace-itemreply

 

这个搞定以后就基本编译不会出错了!

 

 

========================================================================

 

根据http://www.cs.uakron.edu/~xiao/visualization/VTK-Installation-Tutorial.html上进行配置。

解压source code和data的rar,然后修改vtkMFCWindow.cpp中的

#define WINVER 0x0400---------->  #define WINVER 0x0501

然后再进行编译,

在win7下,可能需要将vtk install的文件夹从C:/program files/vtk 改一下,我改成C:/VTK

否则不知道为什么没有安装.h和.lib文件到该文件夹下。

 

打开VTK.sln,Install右键编译即可。

 

here is some .lib filenames:

QVTK.lib

vtkproj4.lib

vtklibxml2.lib

vtkQtChart.lib

vtkexoIIC.lib

vtkalglib.lib

vtkWidgets.lib

vtkVolumeRendering.lib

vtkGenericFiltering.lib

vtkGeovis.lib

vtkViews.lib

vtkHybrid.lib

vtkInfovis.lib

vtkMFC.lib

vtkIO.lib

vtkImaging.lib

vtkzlib.lib

vtkNetCDF.lib

vtkjpeg.lib

vtkRendering.lib

vtkGraphics.lib

vtkFiltering.lib

vtkCommon.lib

vtkverdict.lib

vtkDICOMParser.lib

vtkmetaio.lib

vtkexpat.lib

vtkfreetype.lib

vtkftgl.lib

vtktiff.lib

vtksqlite.lib

vtksys.lib

vtkpng.lib

 

 

 

add these into the Linker->input->additional dependencies.

 

 

你可能感兴趣的:(VTK配置总结)