g2o ライブラリのいくつかのピット (未定義の参照、致命的なエラー: cs.h)

g2o ライブラリは、slam で広く使用されているグラフ最適化ライブラリです。

参考までに、踏まれた穴をいくつか挙げておきます。

最初のピット
/usr/local/include/g2o/solvers/csparse/csparse_extension.h:27:10: 致命的なエラー: cs.h: そのようなファイルまたはディレクトリはありません
27 | #include <cs.h>
| ^~~~ ~~
これが解決策です
。 まず、csparse ライブラリを再度インストールします。すでにインストールされている場合は、インストールされたことを示すメッセージが表示されます。

sudo apt-get install libsuitesparse-dev

次に、スイートスパースがどこにあるかを見つけます

locate suitesparse

結果として、/usr/include/suitesparse/ の下に cs.h を含むいくつかの .h ファイルが表示されます。

このパスを CMakeLists.txt に入れます

include_directories("/usr/include/suitesparse/")

2 番目の穴、`g2o XXX への未定義の参照
多くの g2o 関数が見つかりません。
CMakeLists.txtに以下を追加します。

target_link_libraries(XXX g2o_core g2o_types_slam3d g2o_solver_csparse g2o_stuff g2o_csparse_extension)

おすすめ

転載: blog.csdn.net/level_code/article/details/124165459#comments_27672197