本文转载于 《点云库PCL从入门到精通常见的编译错误》
原文连接:https://blog.csdn.net/jacken123456/article/details/105361314

(1)error c4996: ‘fopen’: This function or variable may be unsafe

解决方法:项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加: _CRT_SECURE_NO_DEPRECATE。

参考博文:https://blog.csdn.net/wangyang20170901/article/details/78810068

(2)…\flann\algorithms\dist.h(523): error C3861: “pop_t”: 找不到标识符

解决方法:双击该行输出直接打开dist.h头文件;将第503行的typedef unsigned long long pop_t;移动到第480行前面。

参考博文:https://blog.csdn.net/weixin_41991128/article/details/83864713

(3)boost\typeof\msvc\typeof_impl.hpp(125): error C2988: 不可识别的模板声明/定义

解决方法:可以代码的源文件最开头的位置加上对BOOST_TYPEOF_EMULATION的定义:

#define BOOST_TYPEOF_EMULATION
#include <pcl\registration\icp.h>

参考博文:https://blog.csdn.net/qq_39031960/article/details/83544928

(4)error C4996: ‘pcl::SAC_SAMPLE_SIZE’: This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class。

解决方法:打开项目属性页>C/C++>常规>SDL检查(设置为否)。

参考博文:https://blog.csdn.net/qing101hua/article/details/70739391

(5)Failed to find match for field ‘rgba’.(例子5-1)

解决方法:用word打开pcd文件查看的类型,发现 Fields不包含RGBA。将PCL::PointXYZRGBA修改为pcl::PointXYZ。


(6) Error:no override found for ‘vtkPolyDataMapper’

解决方法:在源文件的开头加上:

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkInteractionStyle);

参考博文:https://blog.csdn.net/zzh_AI/article/details/88861221

(7) error C2039: “camera_”: 不是“pcl::visualization::PCLVisualizer”的成员

解决方法:最新的pcl已经没有camera_成员了。所以需要替换为:

viewer.camera_.pos[0] = pos_vector[0];
viewer.camera_.pos[1] = pos_vector[1];
viewer.camera_.pos[2] = pos_vector[2];
viewer.camera_.focal[0] = look_at_vector[0];
viewer.camera_.focal[1] = look_at_vector[1];
viewer.camera_.focal[2] = look_at_vector[2];
viewer.camera_.view[0] = up_vector[0];
viewer.camera_.view[1] = up_vector[1];
viewer.camera_.view[2] = up_vector[2];
/***将以上的代码替换为以下函数*****/
viewer.setCameraPosition(pos_vector[0], pos_vector[1], pos_vector[2],look_at_vector[0], look_at_vector[1], look_at_vector[2],up_vector[0], up_vector[1], up_vector[2]);

参考博文:https://www.cnblogs.com/li-yao7758258/p/6444207.html

(8)range_image_visualization.cpp(129): error C3861: “sleep”: 找不到标识符(pcl_sleep识别不了)

解决方法:定位到pcl_sleep的头文件pcl_macros.h,修改pcl_sleep的宏定义sleep(x) 为Sleep(x),【首字母大写】

参考博文:https://blog.csdn.net/m0_37906001/article/details/97785515

(9)法向显示错误ERROR:no override found for ‘vtkActor’.

解决方法:在源文件中添加:

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);

参考博文:https://blog.csdn.net/bflong/article/details/79137692

(10)“error C2653: “sensor_msgs”: 不是类或命名空间名称”

解决方法:在PCL1.8中将PointCloud2加入了pcl名字空间,sensor_msgs是旧的方式,不再使用。将以下代码修改为:

sensor_msgs::PointCloud2::Ptr cloud (new sensor_msgs::PointCloud2 ());
sensor_msgs::PointCloud2::Ptr cloud_filtered (new sensor_msgs::PointCloud2 ());
//以上两行替换为
pcl::PCLPointCloud2::Ptr cloud(new pcl::PCLPointCloud2());
pcl::PCLPointCloud2::Ptr cloud_filtered(new pcl::PCLPointCloud2());

参考博文:https://blog.csdn.net/zfjBIT/article/details/92595768

(11)error C2039: “fromROSMsg”: 不是“pcl”的成员

解决方法:

pcl::fromROSMsg(*cloud_filtered_blob, *cloud_filtered);
//将以上代码修改为
pcl::fromPCLPointCloud2(*cloud_filtered_blob, *cloud_filtered);

(12)error C2039: “compute”: 不是“pcl::UniformSampling”的成员。(例8-4)

解决方法:

//将下面的两行替换
//uniform_sampling.compute(sampled_indices);
//pcl::copyPointCloud(*model, sampled_indices.points, *model_keypoints);
//将上面的两行替换为下面的一行
uniform_sampling.filter(*model_keypoints);   //滤波

参考博文:https://www.cnblogs.com/li-yao7758258/p/6612856.html

(13)使用OpenMP报错,“User Error 1001: argument to num_threads clause must be positive”

解决办法:这是由于设置的线程数必须为正,而程序中可能没有设置,有时候甚至环境变量中设置了,但是依然报错,我们不妨手动设置一下,使用setNumberOfThreads()函数设置一个线程数。例如对于PCL中的一段程序:

pcl::SHOTEstimationOMP<PointType, NormalType, DescriptorType> descr_est;
descr_est.setNumberOfThreads(4);
descr_est.setRadiusSearch(descr_rad_);descr_est.setInputCloud(model_keypoints);
descr_est.setInputNormals(model_normals);
descr_est.setSearchSurface(model);
descr_est.compute(*model_descriptors);

参考博文:https://blog.csdn.net/lch_vison/article/details/80806454

(14)error C2589: “(”:“::”右边的非法标记错误的处理

函数模板中的std::max或者std::min与Visual C++中的全局的宏max冲突。

解决办法:

第一种办法:设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Visual C++的min/max宏定义。项目属性——> C/C++ ——> 预处理器 ——> 预处理器定义 (此处添加预定义编译开关 NOMINMAX)

但是visual C++中定义能自动匹配double和int,如果进行了上述设置,代码中手动将int型的数据乘以1.0来达到double的目的。

第二种办法: 加上括号,与Vsual C++的min/max宏定义区分开:(std::numeric_limits::max)()

参考博文:https://blog.csdn.net/martinkeith/article/details/90896584

(15)error C2440: “初始化”: 无法从“const float [3]”转换为“Eigen::Map<const Eigen::Vector3f,0,Eigen::Stride<0,0>>”

解决办法:将以下代码替换为:

Eigen::Map<const Eigen::Vector3f> point_a_normal = point_a.normal, point_b_normal = point_b.normal;
]//将以上代码替换为下面的代码
Eigen::Map<const Eigen::Vector3f> point_a_normal = point_a.getNormalVector3fMap();
Eigen::Map<const Eigen::Vector3f> point_b_normal = point_b.getNormalVector3fMap();

(16)PCL use getColor() without parameters instead 报错

解决办法:在头文件point_cloud_color_handlers.h中注释掉如下代码 大概在117和619行

PCL_DEPRECATED(1,12,"use getColor() without parameters instead")

(16)error C2661: “pcl::PointCloud::operator new”: 没有重载函数接受 3 个参数
MFC在最开头加了这样的预编译,导致PCL的new报错。
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
解决方法:
把这三行注释,位置在你的dlg.cpp中

【PCL】点云库PCL常见错误相关推荐

  1. 编译安装PCL点云库,Kinect2驱动,乐视Astra相机驱动

    编译安装PCL点云库 安装方法一 3d点云安装 apt-cache cearch pcl 安装 sudo apt install 上面查出来的 opencv不建议用以上方法因为需要 安装 opencv ...

  2. PCL点云库(Point Cloud Library)简介

    PCL点云库(Point Cloud Library)简介 什么是PCL PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了 ...

  3. 点云库PCL学习笔记 -- 点云滤波Filtering -- 3. StatisticalOutlierRemoval 统计滤波器

    点云库PCL学习笔记 -- 点云滤波Filtering -- 3.StatisticalOutlierRemoval 统计滤波器 StatisticalOutlierRemoval 统计滤波器相关简介 ...

  4. Kinectfusion开源实现_配置Kinfu环境_Cmake编译PCL点云库_Kinect3D重建

    Kinectfusion开源实现-配置Kinfu环境-Cmake编译PCL点云库 注: 1.此教程在win10_x64.VS2010_x86环境下,配置运行Kinfu.编译PCL点云库成功,其他环境也 ...

  5. ubuntu pcl 点云库使用

    pcl 点云库使用(cmakeList.xtx) cmake_minimum_required(VERSION 2.6) project(pcl_test)   find_package(PCL 1. ...

  6. PCL点云库:ICP算法

    ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法.在VTK.PCL.MRPT.MeshLab等C++库或软件中都有实现,可以参见维基百科中的ICP Alg ...

  7. 《PCL点云库学习VS2010(X64)》Part 34 旋转平移矩阵用法

    <PCL点云库学习&VS2010(X64)>Part 34 旋转平移矩阵用法 1.变换与投影矩阵讲解: https://en.wikipedia.org/wiki/Transfor ...

  8. 《PCL点云库学习VS2010(X64)》Part 45 点云压缩算法—扫描线(DouglasPeuckerAlgorithm)

    <PCL点云库学习&VS2010(X64)>Part 45 点云压缩算法-扫描线(DouglasPeuckerAlgorithm) 道格拉斯-普克算法主要应用有点云滤波.点云压缩. ...

  9. 《PCL点云库学习VS2010(X64)》Part 51 PTDV0.2迭代加密三角网算法V0.2

    <PCL点云库学习&VS2010(X64)>Part 51 PTDV0.2迭代加密三角网算法V0.2 1.利用实际点云测试初级版本的渐进加密三角网算法: 1.获取最低点 2.构建初 ...

  10. 学习笔记:点云库PCL(Point Cloud Library )介绍

    本文简要介绍点云库(PCL),一个用于处理2D和3D数据的开源库,如激光雷达点云. 通过熟悉使用PCL的一些基础知识,以便后续使用PCL进行定位.主要涵盖以下内容: 点云数据Point Cloud D ...

最新文章

  1. centos 如何登陆mysql_[CentOS 0010] CentOS 配置mysql允许远程登录
  2. 还原淘宝首页最顶部的导航栏(含下拉菜单,图标等)
  3. Spring Cloud Alibaba基础教程:@SentinelResource注解实现限流控制与熔断降级使用详解
  4. IOS研究之App转让流程须知具体介绍
  5. Silverlight中 非UI线程更新UI 的几种方法
  6. 第4章 同步控制 Synchronization ----同步机制的摘要
  7. 360桌面整理计算机图标,电脑桌面脏乱差 360桌面助手一键整理
  8. 【HTML】讲讲对HTML5的语义化的理解
  9. Latex 中文配置解析
  10. 【数学建模】2021 年全国大学生数学建模竞赛A题一等奖获奖论文
  11. echart饼图标签重叠_解决echarts中饼图标签重叠的问题
  12. 爬取北京二手房数据信息(python)
  13. 小程序 选择地区(地区选择器)
  14. 51单片机 (九)定时器
  15. 邮件合并批量制作邀请函
  16. 车牌识别EasyPR(3)——SVM模型判断车牌
  17. 【Optimizaition/x86】Intel CPU的CPUID指令获取的C实现
  18. k8s(八)—调度因素(nodeName、nodeSelector、亲和与反亲和、Taints 污点)、影响pod调度的指令
  19. 想玩明白Hive哪有那么容易,十分钟你都看不完
  20. 如何区分室外网线和室内网线?

热门文章

  1. 1548 A Simple Problem with Integers
  2. 什么是SaaS,PaaS和IaaS? 有例子
  3. requestLayout() improperly called by android.widget.TextView
  4. 数据库SQL Server 2017下载及安装
  5. 【pytorch图像分类】AlexNet网络结构
  6. maven使用modules、parent标签时遇到的问题
  7. 模拟django-simple-captcha实现中文验证码、数字及字母验证码、计算题验证码功能
  8. nginx -s reopen的理解
  9. 工欲善其事必先利其器
  10. [教程]教你如何制作彩色的3D打印Groot