在学习高博的《视觉SLAM十四讲》ch6的g2o_curve_fitting案程时,编译一直出现一下错误:
/slambook/ch6/g2o_curve_fitting/main.cpp:68:18: error: ‘BlockSolver’ in namespace ‘g2o’ does not name a template type
‘g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::LinearSolverType*&)’
一开始以为是大家通有的问题:
no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::LinearSolverType*&)’
https://blog.csdn.net/weixin_36673043/article/details/85345886
按照别人的方法操作也没解决。
后来检查程序发现,少了一个头文件
#include<g2o/core/block_solver.h>
补上即可。
提到g2o库,顺便再啰嗦一句
由于g2o库是第三方库,FINDG2O需要自己加入。
可以g2o_curve_fitting的cmake_modules文件夹复制到当前项目文件夹下,然后在CMakeLists文件中加入下面一句话。
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )
然后再执行find_package等。