visual-c++ - 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)
可能是什么问题呢 ?
解决方案
使用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)
它奏效了