2017-05-30 3 views
1

Je rencontre des erreurs de liaison dans mon projet après une nouvelle compilation et installation de PCL 1.8.0. Certaines classes sont très bien (je peux lire et rendre un PC) mais dès que j'en instancie d'autres, j'ai des erreurs de liens.Erreurs de liaison avec le projet PCL 1.8.0

par ex. Échec de la liaison avec environ 700 références non définies provenant des bibliothèques PCL. Dans cet exemple, la plupart sont liés à des classes liées FLANN de libpcl_search.a et 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)' 

messages de sortie CMake semblent indiquer qu'il est de trouver Flann et je n'eu aucun problème compilant soit la bibliothèque. J'ai également essayé d'appeler explicitement find_package (flann) dans mon Cmake sans succès.

Checking for module 'flann' 
    Found flann, version 1.8.4 

J'ai aussi construit et couru les tests unitaires PCL liés à la classe de filtre dans l'exemple sans erreur. La seule chose que je puisse penser qui soit pertinent est que j'ai construit PCl avec shared_libs = OFF, et les bibliothèques flann sélectionnées par cmake étaient toujours des objets partagés (* .so) malgré l'existence de bibliothèques * .a statiques installées. Je ne pouvais pas obtenir cmake pour les identifier correctement.

Ai-je explicitement besoin de lier les dépendances partagées des bibliothèques statiques dans un nouveau projet? Je pensais que le point de liaison statique était (en partie) de réduire le nombre de dépendances partagées et d'augmenter la portabilité?

Toute aide spécifique ou des directions à l'information généralement pertinente serait très appréciée!

Répondre

0

J'ai résolu problème simialr quand j'utilisais calcul normal PCL en incluant les fichiers ci-dessous de pcl/<module>/impl

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

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

Hope this helps.