PCL报错整理
error C2065: ‘pop_t‘
错误双击,进入dist.h文件,进行修改,将503行代码移动到480行前面
pcl/2d/impl/kernel.hpp: No such file or directory
1.9.1
需要下载这个文件
D:\Program\PCL_1_9_1\include\pcl-1.9\pcl\2d\impl
EuclideanClusterExtraction 相关库链接错误
https://blog.csdn.net/sinat_24206709/category_6118181.html
pcl::BilateralFilter双边滤波器
error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall pcl::BilateralFilter<struct pcl::PointXYZ>::applyFilter(class pcl::PointCloud<struct pcl::PointXYZ> &)" (?applyFilter@?$BilateralFilter@UPointXYZ@pcl@@@pcl@@UAEXAAV?$PointCloud@UPointXYZ@pcl@@@2@@Z)
pcl::BilateralFilter<pcl::PointXYZ> bf;
改为 pcl::BilateralFilter<pcl::PointXYZ>::Ptr bf;
同时使用opencv和pcl库的朋友会遇到Flann冲突的问题。究其根本是因为两个库同时使用了flann,造成歧义
解决方案如下:
首先,注意添加include路径顺序, 先pcl库后opencv
然后,编译会遇到错误代码:lines that were complaining about ‘flann’ : ambiguous symbol
could be ‘flann’
or ‘cv::flann’
表明flann有歧义,pcl和opencv都使用,产生了冲突。
最后,在错误处给flann前加::作用域运算符,限制其作用域。估计错误应该就能搞定。
附:混合多个函数库时尽量使用如std:: cv:: pcl:: 等来代替使用 using namespace std,using namespace pcl,using namespace cv
PCL vtkAtomic.h(358): error C2872: “detail”: 不明确的符号
修改vtkAtomic.h中的typedef detail::AtomicOps<...> ...
在detail之前加上::限定命名空间。
PCL库VTK显示点云法向时出错:no override found for vtkActor
错误:no override found for vtkActor
解决办法:
- 头文件中添加
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL); - opengl32.lib 加入到链接器->输入->附加依赖项
error C4996: vtkMapper::ImmediateModeRenderingOff
c:\program files\pcl 1.9.1\3rdparty\vtk\include\vtk-8.1\vtkmapper.h(218): note: 参见“vtkMapper::ImmediateModeRenderingOff”的声明
解决办法:将sdl选择否
pcl报错:C2116和C2733
https://blog.csdn.net/qq_41017802/article/details/103482535
解决方案:
在vs该项目的属性中,点击C/C++,选择预处理器中的预处理器定义加入
NOMINMAX
BOOST_USE_WINDOWS_H
原因如下:
(1)NOMINMAX
出错文件的标准库在头中定义了两个模板函数std::min() 和 std::max()。
但是我们在 Visual C++ 中无法使用,因为没有定义过这些函数模板,也就是说min和max与传统的min/max宏定义有冲突。需要添加该行“NOMINMAX”与配置属性中,禁用Visual C++ 的min/max宏定义。
(2)BOOST_USE_WINDOWS_H
因为本电脑更新了vs,导致使用pcl有问题,报错显示无法使用“C”链接,也就是函数重载的问题,最为便捷的方法就是在项目的属性中添加预处理器定义“BOOST_USE_WINDOWS_H”,保证函数正常加载。
打开属性窗口