VTK 7.0 安装中内存读取冲突 no override found for “.." 解决记录
来源:互联网 发布:数据安全保护策略 编辑:程序博客网 时间:2024/06/05 20:15
因为毕设要求,所以用VTK来开发项目。实验室本来用的都是VTK5.10,这个版本虽然比较旧但是也比较稳定,安装过程不容易出错。但是由于需要兼容python3的缘故,所以我还是尝试了一下安装VTK(当然这也是以后发展的趋势)
安装的过程就不详细记录了,网上教程很多,官网上也有,我主要参考了VTK中国的中文教程:http://vtkchina.org/course/ 虽然教程是也是正对旧版的,但是大部分的步骤都是一样的,少数的CMAKE中的配置也可以根据英文大概猜出意思。
还有就是官方的网站上面也有安装教程。(主要就是理解一下CMAKE中的几个参数设置的意思即可)
下面就记录一下遇到的 no override found for 的问题:
建立工程有两种方法,一种是通过CMAKE 来建立,一种是通过VS来建立。由于CMAKE相对来说操作比较麻烦,所以比较倾向于用VS直接建立工程。在VS中有三个地方要记得添加VTK生成的库,一个是C/C++中附加包含的库, 一个是在链接器里面常规下的包含目录,最后一个是输入里面添加要用的的.lib文件。
新建工程后报了如下的错误:
中断程序后显示的错误如下:
这个问题在网上也是找了很久的答案,都没有很好的解决问题,关于这个问题最详细的解答就是在官网上的:
http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Factories_now_require_defines
主要两个方法,一个是添加如下代码:
#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL);
这两行代码加在引用VTK类的最前面。
缺少几个模块就添加哪个初始化语句
另一个方法如下;
<pre name="code" class="cpp">#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
但是我试了之后又会报出如下类似的错误(下面是官网上的)
"2>vtkSDIView.obj : error LNK2001: unresolved external symbol "void __cdecl vtkInteractionStyle_AutoInit_Construct(void)" (?vtkInteractionStyle_AutoInit_Construct@@YAXXZ) 2>vtkSDI.cpp.obj : error LNK2001: unresolved external symbol "void __cdecl vtkInteractionStyle_AutoInit_Destruct(void)"(?vtkInteractionStyle_AutoInit_Destruct@@YAXXZ)"
官网上给的解决方法是:
”After linking all the libraries found in the example code (eg the Cone example) these link errors go away. This required adding several tens of new libraries that I had not needed to link for version 5.8 which is slightly annoying. The preprocessor definitions I mention above can also be copied from the Cone example.
“
意思就是说把example中用到的库全部加载过来,这些链接的错误也就没有了,这也将是一件很繁琐的事情。
所以综上所述,要么就乖乖的用CMAKe创建工程,要么就要加一大堆的库文件。
但是我通过仔细的对比发现,其实自己建的工程只有一个地方与CMAKE不同,那就是:
预处理器定义。所以把CMAKE生成的预处理器定义拷贝过去就可以了:
看看CMAKE的预处理器定义:
WIN32;_WINDOWS;_DEBUG;vtkDomainsChemistry_AUTOINIT=1(vtkDomainsChemistryOpenGL2);vtkRenderingContext2D_AUTOINIT=1(vtkRenderingContextOpenGL2);vtkRenderingCore_INCLUDE="<span style="color:#ff0000;">E:/taro/vtk/IRAEE/bin/CMakeFiles/vtkRenderingCore_AUTOINIT_vtkInteractionStyle_vtkRenderingFreeType_vtkRenderingOpenGL2.h</span>";vtkRenderingVolume_AUTOINIT=1(vtkRenderingVolumeOpenGL2);CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)
仔细看这个其实和官网上给的第二种方法原理是一样。都是初始化这些模块。但是这里明显就比较齐全,所以拷贝这个就可以了目录换成自己的。关于当中引用的.h文件,其实也是一个模块初始化定义如下:
#define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2)
SO ,自己创建工程后,添加库和包含文件,最后修改一下预处理器的定义就没有问题了
当然这只是开始学习VTK的第一步,后面还有很多东西要学习,其实这个安装问题花了两天才解决,主要原因是自己对C++的环境不是很熟悉,VTK的资料大都是英文,看起来比较费劲,还有就是很多外网上不去,导致很多信息都看不到。不过万事开头难,下面就要正式开始学习怎么使用VTK 了!
- VTK 7.0 安装中内存读取冲突 no override found for “.." 解决记录
- VTK编译中出现 no override found for vtkpolydatamapper 解决方法
- vtk 出现“no override found for 。。。”
- VTK Error: no override found for 'vtkVolumeTextureMapper2D'.
- vtk使用过程中出现 "no override found for ***"错误的解决办法
- vtk 使用静态版本出现no override found for vtkpolydatamapper
- vtk出现Error:no override found for 'vtkRayCastImageDisplayHleper'
- VTK报错Error: no override found for
- no override found for vtkGPUVolumeRaycastMapper
- VTK6 error: no override found for
- Error:no override found for "vtkRenderer"/"vtkImageMapper"
- no override found for vtkpolydatamapper解决方法
- VTK6 error: no override found for
- Error: no override found for 'vtkRayCastImageDisplayHelper'.
- Error: no override found for'vtkRayCastImageDisplayHelper'
- VTK6 error:no override found for 'vtkRenderWindow'
- VTK6.3.0:Error: no override found for 'vtkContextDevice2D'
- VTKError:no override found for 'vtkImageMapper' 和Link to vtkInteractionStyle
- hive日志分析
- CodeForces 597 A. Divisibility【数学】
- react.js-06-propTypes类型校验
- 【数据结构与算法】(三) c 语言栈的简单实现
- Android双向滑动冲突解决方案
- VTK 7.0 安装中内存读取冲突 no override found for “.." 解决记录
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【动态规划】[USACO2016 金组]Circular Barn Revisited
- 【Java数据库连接类】封装数据库操作的连接类DBConnection
- lua-队列
- 【转载】Contiki 的protothreads
- CodeForces - 633D Fibonacci-ish (map&暴力)
- 第二次上机实践项目-项目3-输出星号图
- poj 3233 Matrix Power Series 矩阵快速幂