0

cpd の新しい c++ ライブラリ ( https://github.com/gadomski/cpd ) を ROS の 1 つのプロジェクトに追加したいと考えています。Ubuntu OS に cpd ライブラリを既に正常にインストールしています。

ROS環境で使いたいと思います。

CMakeList.txt ファイルには、既に次の行を追加しています。

find_package(CPD REQUIRED)

include_directories(include
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIR}
  ${PCL_INCLUDE_DIRS}
  ${CPD_INCLUDE_DIRS}
)

target_link_libraries(background_removal
  ${catkin_LIBRARIES}
  ${OpenCV_LIBRARIES}
  ${PCL_LIBRARIES}
  ${CPD_LIBRARIES}
)

次に、追加したばかりのソースコードで

#include <cpd/nonrigid_lowrank.hpp>

サンプルコードと同様に

cpd::NonrigidLowrank reg;
cpd::Registration::ResultPtr result = reg.run(X, Y);

しかし、コンパイルした後、エラーがスローされます: undefined reference to `cpd::NonrigidLowrank::NonrigidLowrank()'

エラー: `cpd::Registration::run(arma::Mat const&, arma::Mat const&) const' への未定義の参照

cpd のライブラリが ROS にリンクされていないと思いますが、cpd ライブラリを呼び出すのに何か間違ったことをしたのでしょうか?

4

1 に答える 1

3

undefined referenceコンパイラ エラーではなく、リンカ エラーです。の使用は問題ありませんが、ターゲットの に(1)(2)include_directories()も追加するのを忘れていました。${CPD_LIBRARIES}target_link_libraries()


(1): FindCPD.cmake が他のすべての FindXyz.cmake モジュールと同じように「機能する」と推測するだけです。自分で CPD を使用したことはありません。

(2): スニペットから推測すると、さらに追加する必要が${OpenCV_LIBRARIES}あり${PCL_LIBRARIES}ます ...

于 2015-06-17T09:49:14.087 に答える