之前在学习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编译成功了,可以好好学习了。。。^_^

转载于:https://www.cnblogs.com/litengyao/p/5150147.html

Windows10 + VS2015 (Win SDK10)环境下的64位 VTK编译小结相关推荐

  1. linux cmake 编译64位,cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...

  2. 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 ...

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

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

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

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

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

    开发环境:VS2010+ORACLE,今天换了64位WIN7 ,为了方便使用PL/SQL,装了32位oracle客户端,但是本地IIS调试程序的时候总是提示:尝试加载 Oracle 客户端库时引发 B ...

  6. 64位系统下同时使用64位和32位的eclipse

    64位系统下同时使用64位和32位的eclipse eclipse.ini 文件使用说明 The -vm option and its value (the path) must be on sepa ...

  7. PaddleOCR——Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案

    PaddleOCR--Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案 官方文档 环境配置 Step1: 下载PaddlePaddle C++ 预测库 paddle ...

  8. RaspberryPi 3 B下的64位 uboot linux编译更新

    1.我的RaspberryPi 3 B环境 芯片BCM2837rifbg为4核 64位 ARM cortex A53 CPU(这是硬件64位,但软件可是64位或32位的),目前我烧写的buster的R ...

  9. vc2010下使用64位控件

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

最新文章

  1. 201521123016《Java程序设计》第12周学习总结
  2. 刷算法的时候有没有必要自写测试用例?
  3. [ATC 17] StreamBox: 面向多核机器上的针对Records的无序到达的实时流处理系统
  4. @vue/cli启动异常:ENOENT: no such file or directory, scandir
  5. 剧情反转:今年AI要凉!薪资碾压全行,但人才缺500万!
  6. padding/border与width的关系
  7. Unity中的单例方法
  8. 关于C++中的pow()函数
  9. java通过InputStream读取文件
  10. 怎样png转jpg还可以保持原有大小?
  11. ubuntu16.04安装翻译软件stardict
  12. 一直想当5G老大的美国,现在进展怎样了?
  13. linux 节点互信,Linux 集群节点互信ssh配置
  14. Particle Filtering粒子滤波
  15. 入侵和攻击模拟(BAS)实践
  16. asm cli/sti 指令
  17. 微信小程序实现首页图片多种排版布局!
  18. (二)Execute
  19. CAD梦想画图中的“绘图工具——点”
  20. lv双肩包尺寸对照表_最值得入手的10款LV双肩包包书包图片大全

热门文章

  1. linux系统运行flash3d,真正的3D操作系统,太强了
  2. java 计算运算表达式_java字符串运算表达式的计算
  3. ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
  4. java移动端接口测试_移动端质量体系之性能测试(上)
  5. Matlab 如何回退上一步、批量注释以及取消注释
  6. Verilog初级教程(1)认识 Verilog HDL
  7. 【 Vivado 】输出延迟约束实例
  8. 经典模式流水灯实验的个人总结和思考
  9. kubenetes kubectl命令记录
  10. 搜索4--noi6264:走出迷宫