2017-05-30 51 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問題。

相關問題