PCL编译时报错:Could NOT find Boost CMake Error at /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:48

初学PCL,在用CMAKE编译时报如下错误:

Could NOT find Boost CMake Error at /usr/lib/x86_64-linux-
gnu/cmake/pcl/PCLConfig.cmake:48 (message): 
common is required but boost was not found

报错提示找不到boost库,然而我确实是已经安装了boost的。
查阅资料后,使用这篇博文中提到的方法,在 find_package(PCL REQUIRED) 语句前,添加以下语句,便不再报错。

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
ADD_DEFINITIONS(-DBoost_USE_STATIC_LIBS=ON)
set(Boost_INCLUDE_DIR /usr/include/)
set(Boost_LIBRARY_DIR /usr/lib/x86_64-linux-gnu/)

试验后发现,上面的语句中真正其作用的只有最后一句:

set(Boost_LIBRARY_DIR /usr/lib/x86_64-linux-gnu/)

其他的语句都可以删除,但删去最后一句的会报错。
这时,我猜测,之前报错的原因可能是boost环境变量设置不对的原因。查阅资料后发现,自己电脑上的boost与其他人的不太一样,大概是安装的时候没有装好。故重装了boost,重装后,即使不加上面那一语句,编译时也不会报错。问题解决。

总结:

  1. 方法一:在查找PCL库之前,也就是在find_package(PCL REQUIRED) 语句前添加下面的语句
set(Boost_LIBRARY_DIR /usr/lib/x86_64-linux-gnu/)
  1. 方法二:检查boost安装是否正确,环境变量是否设置正确。安装方法和参照这篇博客
这个错误提示是由于 `pcl::PCDReader` 类在读取点云数据,找不到指定的文件所致。如果你遇到了这个问题,有以下几种可能的原因: 1. 文件路径不正确:请检查你的文件路径是否正确,特别是文件名拼写是否正确。 2. 文件不存在:请确认你要读取的文件是否存在,如果不存在,请重新加载正确的文件。 3. 文件格式不正确:请确认你要读取的文件是否是 PCD 格式的点云文件,如果不是,请转换为 PCD 格式。 4. 权限问题:请检查你的文件是否具有读取权限。 解决方法: 1. 确认文件路径是否正确,可以使用绝对路径或相对路径。如果使用相对路径,请确保当前工作目录正确。 2. 确认文件是否存在,可以在代码中添加文件存在性检查,如下所示: ```cpp #include <boost/filesystem.hpp> ... boost::filesystem::path pcd_path("your_pcd_file.pcd"); if (!boost::filesystem::exists(pcd_path)) { std::cerr << "File not found: " << pcd_path << std::endl; return -1; } pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::PCDReader reader; reader.read(pcd_path.string(), *cloud); ``` 3. 确认文件格式是否正确,可以使用 PCL 提供的 `pcl_convert_pcd_ascii_binary` 工具进行转换,如下所示: ```bash pcl_convert_pcd_ascii_binary input_pcd_file output_pcd_file 0 ``` 其中,`input_pcd_file` 是要转换的文件,`output_pcd_file` 是转换后的文件,`0` 表示转换为二进制格式,`1` 表示转换为 ASCII 格式。 4. 确认文件是否具有读取权限,可以检查文件权限设置,或尝试使用管理员权限运行程序。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值