首页 > 解决方案 > VTK - 从 6.1 迁移到 8.2

问题描述

我有一个使用 VTK 6.1 / VS2008 的 VTK/MFC 项目。我打算把这个项目迁移到VTK 8.2 / VS2010,遇到一个问题:

在 stdafx.h,VTK 6.1 我有:

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle, vtkRenderingFreeType, vtkRenderingFreeTypeOpenGL, vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

这些初始化在 VTK 8.2 上不起作用,我收到一个链接错误:

error LNK2001: unresolved external symbol "void __cdecl vtkRenderingFreeTypeOpenGL_AutoInit_Construct(void)" (?vtkRenderingFreeTypeOpenGL_AutoInit_Construct@@YAXXZ)

... 在 VTK 8.2 中应该写什么?

稍后编辑: 我遇到另一个链接错误:

vtkRenderingOpenGL2-8.2.lib(vtkOpenGLState.obj) : error LNK2019: unresolved external symbol __imp_SymGetLineFromAddr64 referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl getProgramStack(void)" (?getProgramStack@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)

可能是什么问题呢 ?

标签: visual-c++mfcvtk

解决方案


使用OpenGL2怎么样?

我在 VTK 8.1 和 vs2017 有同样的问题

我改变了 CMAKE 选项使用 OpenGL2 ,并改变了定义

#include <vtkAutoInit.h>

VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
VTK_MODULE_INIT(vtkRenderingFreeType)

它奏效了


推荐阅读