使用VTK-7.0.0构建PCL 1.8的错误

时间:2016-02-10 22:09:58

标签: cmake vtk point-cloud-library

尝试使用VTK 7.0.0构建PCL 1.8。目标是Visual Studio 2015。 使用VTK OpenGL2后端我得到的错误与报告的herehere类似,表明PCL尚不支持OpenGL2。

然而,使用原始的VTK OpenGL后端我得到了不同的错误:

  • PCL项目链接的VTK库列表包括名称同时表示OpenGL和OpenGL2的库,即使VTK仅配置了一个或另一个后端。例如,“vtkDomainsChemistryOpenGL2.lib”(当VTK后端是OpenGL时)。

  • “vtkDomainsChemistryOpenGL2.lib”不存在,导致链接器错误。但是,存在名为“vtkDomainsChemistryOpenGL2-7.0.lib”的库,因此在构建VTK时会出现添加版本后缀,但在CMake生成用于链接PCL项目的库列表时不会添加。

  • vtkVertexBufferObject.cxx(104): error C2039: 'GetExtensionManager': is not a member of 'vtkOpenGLRenderWindow'。类vtkOpenGLRenderWindowVTKRENDERINGOPENGL2_EXPORT标记为可疑(同样在OpenGL版本中)。

我不知道问题出在VTK还是PCL上。 CMake构建系统对我来说是完全不透明的,所以我无处可去。

1 个答案:

答案 0 :(得分:0)

跟着自己(再次)......

问题在于,因为我最初建立了" INSTALL"使用OpenGL2后端的VTK项目,然后将后端更改为OpenGL并构建了" INSTALL" VTK项目再次出现,两个后端都存在于安装文件夹中。 VTKConfig.cmake(PCL用来与VTK链接)查找并链接到它在安装文件夹中找到的所有模块,从而尝试链接两个不兼容的后端。

VTK构建系统在安装时没有检测到冲突模块已经存在,并且" make clean"或者"重建"选项不会删除冲突的模块(VTK没有卸载程序)。删除CMake缓存或创建一个新的清理构建目录不足以消除这个混乱。

因此,唯一的解决方案是手动查找并删除VTK安装文件夹(" C:\ Program Files(x86)\ VTK",以备记录)改变VTK后端。