2017-05-30 319 views
1

在全新编译和安装PCL 1.8.0之后,我在项目中发现了一些令人困惑的链接错误。有些类很好(我可以读取和渲染PC),但是当我实例化其他一些类时,我会遇到一些链接器错误。PCL 1.8.0项目中的链接器错误

例如。

#include <pcl/point_types.h> 
#include <pcl/filters/statistical_outlier_removal.h> 

int main() 
{ 
    pcl::StatisticalOutlierRemoval<pcl::PointXYZ> testObject; 
} 

失败在约700未定义的引用从PCL库中进行链接。在这个例子中,大多数都涉及到从libpcl_search.a FLANN相关的类和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的输出信息似乎表明,它是寻找FLANN和我没有任何编译库的任何问题。我也尝试在我的Cmake中明确调用find_package(flann),但没有成功。

Checking for module 'flann' 
    Found flann, version 1.8.4 

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

我唯一能想到的可能是相关的是,我用shared_libs = OFF构建了PCl,尽管存在* .a静态库,但cmake选择的flann库仍然是共享对象(* .so)。我无法让cmake正确识别它们。

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

任何特定的帮助或指导一般相关的信息将不胜感激!

回答

0

我有我使用PCL标准计算在通过包括以下文件从pcl/<module>/impl

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

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

希望这有助于解决simialr问题。

相关问题