多个PCL库导致编译出错的问题

背景:

之前的一个程序,编译木有问题,各种链接库也都OK。之前编译时,会出现2个警告:多个PCL库导致编译出错的问题_第1张图片

现在编译居然不出现这两个警告,但是,链接库出问题,导致编译不通过。

In function `pcl::PointCloud<pcl::PointXYZ>::operator+=(pcl::PointCloud<pcl::PointXYZ> const&)':
register_clouds.cpp:(.text._ZN3pcl10PointCloudINS_8PointXYZEEpLERKS2_[pcl::PointCloud<pcl::PointXYZ>::operator+=(pcl::PointCloud<pcl::PointXYZ> const&)]+0x1b): undefined reference to `ros::TimeBase<ros::Time, ros::Duration>::operator>(ros::Time const&) const'

原因:

在cmakelists.txt中,我是用 find_package(PCL 1.2 REQUIRED) 去找pcl库路径的。我在ubuntu系统中首先手动安装PCL库,那时编译是没有问题的。但是,后来,我安装了groovy,而且是特别全的版本,里面也有PCL库。这样,我系统中出现两个不同路径的PCL库了,用find_package(PCL 1.2 REQUIRED) 会把这两个库都找到,像上述的问题是由于程序链接了ROS下面的PCL库导致的。

解决方法:

sudo gedit /opt/ros/groovy/include/pcl-1.6/pcl/point_cloud.h

添加: #include </opt/ros/groovy/include/ros/impl/time.h>

编译通过!

你可能感兴趣的:(多个PCL库导致编译出错的问题)