vtkPowerCrustSurfaceReconstruction运行报错及解决方案

最近偶然发现的经典曲面重建算法PowerCrust算法的vtk库,因此下载了GitHub上的库和例程,由于运行版本较高VTK6.0版本,出现了很多错误。现将一些遇到的错误和相应解决措施记录如下:

  1. 在VTK6.3版本下,用cmake进行配置后得到了sln文件,在VS2010下进行编译,发现出现了“看起来像函数定义,但没有参数列表;跳过明显的函数体 ”的错误;另外还有Macro的错误,我已经记不清了。
    **解决:**针对这几个错误,尝试过重装旧版的VTK,但是会引入其他的错误,因此对比了新旧版VTK的MC算法的头文件,做了修改如下:
#include "vtkFiltersGeneralMoudle.h"//For export macro
#include "vtkSetGet.h"
将
class VTK_GRAPHICS_EXPORT_vtkPowerCrustSurfaceReconstruction:public vtkPolyDataAlgorithm
改为
class __declspec(dllexport) vtkPowerCrustSurfaceReconstruction:public vtkPolyDataAlgorithm

之前是将VTK_GRAPHICS_EXPORT改为了VTKFILTERSCORE_EXPORT,虽然编译通过,但是还会出其他问题

  1. 亘古不变永远都会遇到的SetInput和SetInputConnection的替换问题。
  2. 字符串错误,定位错误在
vtkCxxRevisionMacro(vtkPowerCrustSurfaceReconstruction,"Revision:1.2$");

这个好像是定义VTK版本相关的(其实我也没查明白),但是我对比了新旧两版的程序里(同样是MC算法),发现新版本里压根就不说这句话了,只留着vtkStandardMacro这一行,因此直接注释掉,编译通过。
但是,链接错误了……找不到DLL库且无法解析的外部符号
这时候这个就派上用场了添加链接描述,直接在属性里将控制台(SUBSYSTEM:CONSOLE) 则表示此项目是WIN32控制台程序。而选择Windows (/SUBSYSTEM:WINDOWS) 则表示为 WIN32项目。
编译通过,链接成功生成obj文件。
另外example中并不能直接显示网格,没有界面,但是可以生成output文件,同样是ply格式。不能直接运行,需要设定输入数据的名字(加路径)
注意:CMakeLists.txt也需要改,因为原始包里执行文件没有包含头文件,要包含进去,而且需要将最后一句关于数据的注释掉,否则会在Cmake编译的时候就报错

你可能感兴趣的:(VTK)