配置PLADE环境记录
该篇文章的配置花了我两周的时间
记录下配置踩过的坑
先总结一句配环境的理论,在VS下配置PCL环境,对方用的啥平台就用啥平台,用的啥版本的库就用啥版本的库。开始我图方便用VS2017配置,结果还是得安装VS2013,,配了OpenCV2.4.13和PCL1.8.1,最后还是老老实实按照他用的老版本Opencv2.4.10和PCL1.8.0配置。
目录
1.OpenCV2.4.13+PCL1.8.1+VTK8.0,编译程序报错:找不到vtk-core7.0.dll
2.源码编译VTK7.0, 解决了vtk7.0core.dll的问题
一、踩坑记录
1.OpenCV2.4.13+PCL1.8.1+VTK8.0,编译程序报错:找不到vtk-core7.0.dll
首先是配置了OpenCV2.4.13和PCL1.8.1以及源码编译VTK8.0,编译程序报错:找不到vtk-core7.0.dll。因为PCL1.8.1对应的VTK8.0的版本,这个开始以为改一下它程序,就可以调用VTK8.0的版本,但是调试了好久没找到修改的地方,于是开始配置VTK7.0。
2.源码编译VTK7.0, 解决了vtk7.0core.dll的问题
图方便直接源码编译VTK7.0,PCL还是1.8.1, 解决了vtk7.0core.dll的问题
1)单独编译vtk7.0,debug模式下有权限问题,release编译成功
2)调试报错找不到opencv2410.dll的问题,换成opencv2410
3)Release32下成功生成exe,但测试数据时报错
猜测:
a)pcl版本1.8.1不对应vtk7.0
b)点云数据问题
3.编译PCL1.8.0
测试例程报错:error C2039: “_Insert_n“: 不是 “std::vector...成员问题
测试PLADE报错:
百度出错原因:
Visual Studio 2013(即宏 _MSC_VER = 1800),而我正在使用的 IDE 是 Visual Studio 2017(即宏 _MSC_VER = 1900),出错信息很明确的指出了,当前的编译平台工具集并不匹配。
解决方式:
a)用VS2013编译
b)用VS2017编译 libcef_dll_wrapper13d.lib
4.安装VS2013编译
(安装VS2013官网的community版本与VS2017冲突,卸载后安装了离线安装包VS2013ULT)
- Debug32测试opencv2410和PCL180成功
- PLADE测试Debug版本报错:找不到MSVCR110D.dll
百度原因:这个MSVCR版本是VS2012,需要下载一个 MSVCR110D.DLL并安装即可。
但这个博客说安装了没效果,需要重装vs2012,保险起见安装了VS2012专业版。
成功。(但后面发现即使不装V2012,exe也已经生成成功了,只是debug控制台窗台报错。)
5.试用VS2012平台编译
因为通过观察PLADE的原始属性表,它是用vc110即VS2012编译的,想尝试用VS2012编译一下,但发现安装的PCL1.8.0是VS2013的Allone版本,在VS2012平台上出错:\vtk-7.0\vtkmath.h(1275): error C2039: “isinf”: 不是“std”的成员。
PLADE用的就是PCL1.8.0,官方安装包只有PCL-1.8.0-AllInOne-msvc2013即VS2013集成版本,没有VS2012的,再看看PLADE自带的属性表,怀疑它是源码编译的PCL1.8.0所有的第三方库。
二、配置PLADE平台教程
环境:
统一环境:win32+debug32
VS2013正式版+PCL1.8.0+OpenCV2.4.10
1.安装VS2013
安装VS低版本可能和已存在的高版本VS冲突,我最先在官网下载的VS2013社区版,安装完装了一个语言包,打开就一直停在正在加载初始化的界面,怀疑是该版本与自身已存在的VS2017冲突。如果出现该情况,使用微软出版的VS卸载工具卸载干净VS再进行安装。
可参考完全卸载VS,我用的第五代工具,卸载过程需要耐心等一段时间
(这里感谢实验室小师弟主动献上VS2013正式版的安装包,他的环境与我的差不多,装上非常放心,后面也再次麻烦了他安装VS2012测试。)
2.安装OpenCV2.4.10
最开始装opencv2410的时候,不知道为啥一直出错,什么中断的错误,后面再次编译它的时候好了,猜测前面编译它的时候是库名称没有配置好,直接复制粘贴了其他人博客的。
配置过程参考OpenCV 2.4.10 + VS2013 开发环境配置
也可参考我的博客VS2019源码编译工程代码OpenCV2.4.13.6
3.配置PCL1.8.0
参考pcl1.8.0+vs2013环境配置(详细),测试例程可用他的
也可参考我的博客VS2017+PCL1.8.1+VTK8.0.0+QT
安装了PCL-1.8.0-AllInOne-msvc2013-win32后,没有源码编译VTK7.0,直接可用
三、PLADE使用
1.测试使用管理员模式下的CMD“xxx.exe xxx.bpn”
2.测试数据是通过mapple处理过保存bpn格式的数据
3.工程中两个项目,项目plane_based_registration 包含一个parse_VG.cpp处理法向量,一个registration.cpp处理配准,需要哪个编译哪个的exe。项目pointcloud_processing是生成pointcloud_processing.dll的项目,工程文件夹里已有生成好的dll在libs文件夹。
(parse_VG.exe界面)
可能出现的配置问题:
1)C2079 “pcl::KdTreeFLANN...param_k_”使用未定义的 struct“flann::SearchParams”
参考文章