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;
}
PCLライブラリ内の約700個の未定義参照とのリンクに失敗します。この例では、ほとんどがlibpcl_search.aからFLANN関連するクラスに関連していると
/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)'
libpcl_recognition.a CMakeの出力メッセージは、それがFLANN発見され、私はどちらかのライブラリをコンパイルするすべての問題を持っていなかったことを示しているように見えます。私は明示的に私のCmakeでfind_package(flann)を呼び出そうとしましたが、成功しませんでした。
Checking for module 'flann'
Found flann, version 1.8.4
私も構築され、エラーなしの例ではフィルタクラスに関連するPCLユニットテストを実行しました。私はそれが関連するかもしれないと思うことができ
唯一のことは、私はshared_libs = OFFでのPClを構築していることである、とcmakeのが選択しFLANNライブラリはまだ* .aの静的ライブラリがインストールされてそこにいるにもかかわらず、オブジェクト(* .soの)共有されていました。私はそれらを適切に識別するためにcmakeを得ることができませんでした。
新しいプロジェクト内の静的ライブラリの共有依存関係を明示的にリンクする必要はありますか?私は静的リンクのポイントは、(一部)共有依存関係の数を減らし、移植性を高めることだと思いましたか?
一般的に関連する情報への具体的なヘルプや指示は、非常に高く評価されます。私はpcl/<module>/impl
#include <pcl/search/impl/kdtree.hpp>
#include <pcl/kdtree/impl/kdtree_flann.hpp>
からファイルの下に含めることによって、PCL通常の計算を使用していたとき、私はsimialr問題を解決した