一文教你如何永久关闭PCL+VTK 在Windows环境下弹出的vtkOutputWindow

1 篇文章 0 订阅

一文教你如何永久关闭PCL+VTK 在Windows环境下弹出的vtkOutputWindow

最近做PCL windows客户端开发,环境什么都配置好了,代码也跑起来了,但是烦人的事情来了,就是一运行就会弹出vtkOutputWindow,如下图:
在这里插入图片描述
网上查了一通,各种方法都不能解决,比如初始化前添加:
vtkObject::GlobalWarningDisplayOff();
这个实际上是有效果的,但只是针对是你当前项目下使用的vtk,而大部分人在Windows下用的PCL应该都是直接从github上releases页面下载的,也就是那个AllInOne的安装包,但这里PCL是编译好的,而且编译用的VTK库是没有关闭该警告窗口的。所以,网上那些文章里提到的解决方法都是对你无效的。
https://github.com/PointCloudLibrary/pcl/releases
在这里插入图片描述
划重点:解决方法就是重新编译PCL+VTK
简单步骤如下:

  1. 下载PCL-1.9.1-AllInOne-msvc2017-win64.exe 安装,因为自己编译也需要里面的第三方库,安装这个可以直接用里面的第三方库,省的自己再找。
  2. 下载PCL-1.9.1源码 github上下载 tag = pcl-1.9.1
  3. 下载VTK源码,https://vtk.org/download/
  4. 用CMAKE配置VTK,然后VS编译,如何编译文章很多就不多说,注意VTK_LEGACY_SILENT要打勾,这样就不会再弹出那个窗口了。
    在这里插入图片描述
    可以看下VTK源码中的vtkSetGet.h这个头文件中有这么一段代码:
#if defined(VTK_LEGACY_REMOVE) || defined(VTK_LEGACY_SILENT)
# define VTK_LEGACY_BODY(method, version)
# define VTK_LEGACY_REPLACED_BODY(method, version, replace)
#else
# define VTK_LEGACY_BODY(method, version) \
  vtkGenericWarningMacro(#method " was deprecated for " version " and will be removed in a future version.")
# define VTK_LEGACY_REPLACED_BODY(method, version, replace) \
  vtkGenericWarningMacro(#method " was deprecated for " version " and will be removed in a future version.  Use " #replace " instead.")
#endif

所以,如果定义了VTK_LEGACY_SLIENT就不会调用vtkGenericWarningMacro这个方法,自然就没有Generic Warning窗口了。

  1. CMAKE配置PCL,如何配置文章也很多,需要的第三方库刚才第一步中的exe安装后也都有,只有VTK要用重新编译的版本就可以了。

所以,Windows上做PCL开发想要不弹出Generic Warning窗口(vtkOutputWindow),请自己重新编译PCL+VTK,这是一个漫长的等待过程!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值