之前在学习vtk过程中,感觉vtk的编译还是很简单的,基本上不会碰到什么棘手的错误。但是,当我在Win10+VS2015这个环境下配置时,却遇到了麻烦。经过一番折腾之后,终于将vtkbian编译成功了,这里做个小结,希望对大家有所帮助。

Step 1: 使用cmake3.3.0对vtk-6.2.0源码进行configure操作

选择VS2015 Win64选项作为编译器设置

可能出现的错误:HDF5对64位位长数据支持检测失败

解决方案:这个是因为在HDF5配置源码文件中缺少I64这个选项,添加I64选项即可解决

Step 2:使用cmake3.3.0对vtk-6.2.0源码进行generate操作,生成vs工程

这里我在默认配置的基础上勾选了BUILD_EXAMPLES和Module_vtkGUISupportMFC选项(因为我在开发的过程中会用到)

Step 3:以管理员方式打开VS2015,打开对应的sln文件

错误一:

19>D:\Softwares\vtk\VTK-6.2.0\Common\Core\vtkWin32ProcessOutputWindow.cxx(98): error C3688: 文本后缀"PRIdword"无效;未找到文文本运算符或文本运算符模板"operator """"PRIdword"

19>D:\Softwares\vtk\VTK-6.2.0\Common\Core\vtkWin32ProcessOutputWindow.cxx(99): error C2664: "int sprintf(char *const ,const char *const ,...)": 无法将参数 2 从"DWORD"转换为"const char *const "

19> D:\Softwares\vtk\VTK-6.2.0\Common\Core\vtkWin32ProcessOutputWindow.cxx(99): note: 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换

解决方案:在D:\Softwares\vtk\VTK-6.2.0\Common\Core\vtkWin32ProcessOutputWindow.cxx第99行处进行如下修改:

//sprintf(exeName, "vtkWin32OWP_%"PRIdword"_%p_%u.exe",GetCurrentProcessId(), this, this->Count++);

sprintf(exeName, "vtkWin32OWP_%u_%p_%u.exe", GetCurrentProcessId(), this, this->Count++);

也就是将"PRIdword"替换为u。

错误二:

12>C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\corecrt_search.h(191): error C2375: "lfind": 重定义;不同的链接

12> d:\softwares\vtk\vtk-6.2.0\thirdparty\tiff\vtktiff\tiffiop.h(57): note: 参见"lfind"的声明

解决方案:在d:\softwares\vtk\vtk-6.2.0\thirdparty\tiff\vtktiff\tiffiop.h中第57行处作如下修改:

在#ifdef HAVE_SEARCH_H 前面添加宏定义 #define HAVE_SEARCH_H。

错误三:

22>C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\stdio.h(1925): warning C4005: "snprintf": 宏重定义

22> D:\Softwares\vtk-build\ThirdParty\libxml2\vtklibxml2\config.h(254): note: 参见"snprintf"的前一个定义

22>C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\stdio.h(1927): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration

解决方案:

在D:\Softwares\vtk-build\ThirdParty\libxml2\vtklibxml2\config.h中第252行处进行如下修改:

/* Win32 Std C name mangling work-around */

//#if defined(_MSC_VER)

//# define snprintf _snprintf

//#endif

即将此处的宏定义注释掉,因为在VS2015中已经对snprintf提供了官方支持

 

在分别对ALL_BUILD和INSTALL进行生成操作后,结果如下:

好了,vtk编译成功了,可以好好学习了。。。^_^

Windows10 + VS2015 (Win SDK10)环境下的64位 VTK编译小结的更多相关文章

  1. win7下android开发环境搭建(win7 64位)

    win7下android开发环境搭建(win7 64位)   一.安装 JDK 下载JDK最新版本,下载地址如下: http://www.oracle.com/technetwork/java/jav ...

  2. Win 10环境下6sV2.1模型编译心得

    最新版本6sV2.1模型是通过FORTRAN95编写的,2017年11月代码编写完成,2018年11月发布在模型官网上.通常我们在使用过程中都是调用模型的.exe可执行文件,而下载下来的是FORTRA ...

  3. Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)

    Windows下mysql 64位 安装(mysql-5.7.11-winx64安装) 系统Windows10 安装包mysql-5.7.11-winx64.zip 安装过程中遇到的问题,请留意4.0 ...

  4. 如何在安装32位Oracle客户端组件的情况下以64位模式运行

    C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了,错误信息如下:启动data ...

  5. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  6. 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题

    今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...

  7. 运行时报:尝试加载 Oracle 客户端库时引发 BadImageFormatException,如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题

    运行环境为: Windows Server2012 Oracle11g  32位数据库+客户端 IIS发布后提示错误信息: “尝试加载 Oracle 客户端库时引发 BadImageFormatExc ...

  8. linux下hadoop2.6.1源码64位的编译

    linux下hadoop2.6.1源码64位的编译 一. 前言 Apache官网上提供的hadoop本地库是32位的,如果我们的Linux服务器是64位的话,就会现问题.我们在64位服务器执行Hado ...

  9. vc2010下使用64位控件

    最近把我的控件(ST_Curve www.st-curve.cn)升级到了64位,2010编译,本来以为很简单的问题,结果折腾了两天(也有可能我多年没做过界面和vc相关的东西了吧),于是把我遇到的问题 ...

随机推荐

  1. CDH管理节点扩容磁盘步骤

    把4个节点加12G内存,把hive的heap调到6G,按group重启服务让配置生效 注: 停服务前在yarn的application webui查flink的application id yarn ...

  2. Websocket --(3)实现

    今天介绍另外一种websocket实现方式,结合了spring MVC,并完善了第二节所提到做一个简单的登录认证用来识别用户的名称.界面继续沿用第二节的布局样式,同时增加上线和下线功能. 参考了 ht ...

  3. Git介绍、安装、命令和实战

    一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...

  4. P1057传球游戏

    这是一道动态规划的水题,难度为提高-. 题意为:n个人围成一个环传球,每一次都可以往左或右传,传m次,问有几种最后传到小明手里的方案数.然后因为一个状态有两个变量,所以我们用dp[][]来存储[传球次 ...

  5. html之input

    <input>在w3c中解释的是用于搜集用户的信息 它其实就是一个输入框,根据type的不同这个框可以用作不同的功能可以输入一个文本,可以定义一个按钮什么的. 属性type一些值的介绍 1 ...

  6. python中判断字典中是否存在某个键

    python3 中采用 in 方法 #判断字典中某个键是否存在 arr = {"int":"整数","float":"浮点&quo ...

  7. 实例学习——爬取Pexels高清图片

    近来学习爬取Pexels图片时,发现书上代码会抛出ConnectionError,经查阅资料知,可能是向网页申请过于频繁被禁,可使用time.sleep(),减缓爬取速度,但考虑到爬取数据较多,运行时 ...

  8. ubuntu下python3虚拟环境的配置

    安装相关包 sudo pip3 install virtualenv # 虚拟环境包 sudo pip3 install virtualenvwrapper # 虚拟环境管理包 创建虚拟环境目录 su ...

  9. 对比XGBoost与深度学习

    观点1:XGBoost要比深度学习更重要.2016年Kaggle大赛29个获奖方案中,17个用了XGBoost.因为它好用,在很多情况下都更为可靠.灵活,而且准确:在绝大多数的回归和分类问题上,XGB ...

  10. django-xadmin使用

    django-xadmin使用基础环境为: PS:如下环境如需升级python则先升级python,然后安装django python3.6.4安装: http://www.cnblogs.com/c ...