PCL 1.8.0项目的链接器错误

Linker errors with PCL 1.8.0 project

本文关键字:链接 错误 项目 PCL      更新时间:2023-10-16

我在汇编和安装PCL 1.8.0后,我会在项目中得到一些令人困惑的链接错误。有些课程很好(我可以阅读并渲染PC(,但是一旦我实例化了其他一些,我就会遇到链接器错误。

例如。

#include <pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>
int main()
{
  pcl::StatisticalOutlierRemoval<pcl::PointXYZ> testObject;
}

与来自PCL库中的约700个未定义的参考链接失败。在此示例中,大多数与libpcl_search.a和libpcl_recognition.a

的相关类有关
/usr/local/lib/libpcl_search.a(kdtree.cpp.o):-1: In function `pcl::search::KdTree<pcl::PointXYZ, pcl::KdTreeFLANN<pcl::PointXYZ, flann::L2_Simple<float> > >::setSortedResults(bool)':
/home/Horatio/libs/pcl-pcl-1.8.0/search/include/pcl/search/impl/kdtree.hpp:65: error: undefined reference to `pcl::KdTreeFLANN<pcl::PointXYZ, flann::L2_Simple<float> >::setSortedResults(bool)'

cmake输出消息似乎表明它正在找到弗兰恩,而且我没有任何库库的问题。我还尝试在我的Cmake中明确调用Find_package(Flann(,但没有成功。

Checking for module 'flann'
  Found flann, version 1.8.4

我还构建并运行了与示例中的过滤器类相关的PCL单元测试。

我唯一可以认为可能相关的是我用共享_libs = off构建了pcl,而Cmake选择的Flann库仍然是共享对象( *.. so(,尽管安装了 *..静态库。我无法让Cmake正确识别它们。

我是否需要明确需要链接一个新项目中静态库的共享依赖关系?我认为(部分(静态链接的目的是减少共享依赖性的数量并增加可移植性?

任何特定的帮助或通常相关信息的指示将不胜感激!

我在使用pcl普通计算时解决了simialr问题,包括以下来自 pcl/<module>/impl

的文件

#include <pcl/search/impl/kdtree.hpp>

#include <pcl/kdtree/impl/kdtree_flann.hpp>

希望这会有所帮助。