我不是编译 C++ 代码的专家,我对 PCL 库中的一个过滤器的最小扩展有疑问。我按照此处sudo apt install libpcl-dev
的说明在 Ubuntu 20.04 上安装了 PCL 库,我可以成功地使用它在我的 ROS 相关代码中执行不同的操作。
但是,我想通过添加几行代码来稍微改变voxel_grid的行为,以便它以不同的方式计算此过滤器质心中的某些字段(此处的细节无关紧要)。我通过仅将这两个文件下载到我的 ROS 项目中来合并相关的头文件和.cpp 文件 ,并将过滤器的名称从更改为(这样我的代码不会覆盖已安装的 PCL 库中的原始代码),添加了几个我的代码行到 cpp_file,问题是我的编译器无法正确链接某些东西。我得到的错误是
VoxelGrid
VoxelGrid2
/usr/bin/ld: CMakeFiles/dense_map_builder.dir/src/synced_msgs_saver2bags.cpp.o:(.data.rel.ro._ZTVN3pcl10VoxelGrid2INS_9PointXYZIEEE[_ZTVN3pcl10VoxelGrid2INS_9PointXYZIEEE]+0x48): undefined reference to `pcl::VoxelGrid2<pcl::PointXYZI>::applyFilter(pcl::PointCloud<pcl::PointXYZI>&)' collect2: error: ld returned 1 exit status
我知道pcl::VoxelGrid2<pcl::PointXYZI>::applyFilter(pcl::PointCloud<pcl::PointXYZI>&)
我的 .cpp 文件中有这个原型 ( ) 的这个功能,但编译器仍然在喊它无法链接它。任何想法我做错了什么?或者如何将几行代码添加到 PCL 库中的过滤器并在我的程序中使用它?