PCL报错整理

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

解决办法:

  1. 头文件中添加
    #include <vtkAutoInit.h>
    VTK_MODULE_INIT(vtkRenderingOpenGL);
  2. 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”,保证函数正常加载。


打开属性窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/c5a22ffc7431423ebdcea8075dde34c1.png

<think>好的,我现在需要帮助用户在Linux系统上安装和配置PCL(Point Cloud Library)。根据用户提供的引用资料,有几种不同的安装方法,我需要整理这些信息,确保步骤清晰正确。 首先,用户提到的引用[1]和[2]都提到了使用apt-get安装libpcl-dev,这是Ubuntu系统中最简单的方法,适用于不需要最新版本的用户。但可能需要确认不同Ubuntu版本对应的PCL版本,比如引用[2]中提到的是Ubuntu16.04安装pcl-1.8.1,而引用[3]是Ubuntu18.04的教程,使用源码编译安装。用户可能不清楚不同安装方式的区别,需要解释清楚。 然后,引用[3]的步骤是从GitHub克隆源码,编译安装。这种方法适合需要最新版本或自定义功能的用户,但过程较为复杂,需要确保系统安装了编译所需的依赖项,比如CMake、Git、g++等。用户可能遇到依赖缺失的问题,需要提前列出所需依赖,并指导安装。 另外,要注意不同安装方式的冲突。如果用户之前通过apt安装了libpcl-dev,再编译安装可能会出现问题,需要提醒用户是否需要卸载旧版本或者处理环境变量。 还需要验证安装是否成功,比如编写一个简单的测试程序,并链接PCL库进行编译。这部分需要给出具体的示例代码和编译命令,确保用户能够验证安装结果。 在整理步骤时,应分点说明两种安装方法:二进制包安装和源码编译安装,并列出各自的优缺点。同时,注意事项部分需要涵盖版本兼容性、依赖项、环境变量设置等。最后,生成相关问题,帮助用户进一步解决可能遇到的问题,比如依赖安装失败、版本冲突等。</think>### 在Linux系统上安装和配置PCL点云库的步骤 #### 方法一:通过APT包管理器安装(推荐快速安装) 1. **更新软件源** 打开终端,运行以下命令更新软件包列表: ```bash sudo apt-get update ``` 2. **安装PCL库及依赖** 安装预编译的PCL库(适用于Ubuntu 16.04/18.04/20.04等主流版本): ```bash sudo apt-get install libpcl-dev ``` 此命令会自动安装PCL核心库及运行时依赖项[^1][^2]。 3. **验证安装** 编写测试代码`test_pcl.cpp`: ```cpp #include <pcl/point_types.h> int main() { pcl::PointCloud<pcl::PointXYZ> cloud; return 0; } ``` 编译并运行: ```bash g++ test_pcl.cpp -o test_pcl -lpcl_common ./test_pcl ``` 若无报错,则安装成功。 --- #### 方法二:源码编译安装(适合需要最新版本或自定义功能) 1. **安装编译依赖项** ```bash sudo apt-get install git build-essential cmake libboost-all-dev libeigen3-dev libflann-dev libvtk6-dev libqhull-dev ``` 2. **克隆PCL源码** ```bash git clone https://github.com/PointCloudLibrary/pcl.git cd pcl ``` 3. **编译并安装** ```bash mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) # 使用所有CPU核心加速编译 sudo make install ``` 此过程可能需要20-30分钟[^3]。 --- #### 注意事项 1. **版本兼容性** - Ubuntu 16.04默认APT源提供PCL 1.7.x - 源码编译可安装最新版(如1.12.x) 2. **环境变量配置** 若自定义安装路径(如`/usr/local`),需在项目CMakeLists.txt中添加: ```cmake find_package(PCL REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) ``` 3. **卸载旧版本** 若先前通过APT安装,建议先卸载: ```bash sudo apt-get purge libpcl-dev ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值