[Bug集合]undefined reference to `g2o::csparse_extension::writeCs2Octave

一般是g2o没用好。参考这篇文章。https://blog.csdn.net/unlimitedai/article/details/88698597

可能出现以下问题:

../../lib/libmyslam.so: undefined reference to `g2o::csparse_extension::writeCs2Octave(char const*, cs_di_sparse const*, bool)'
../../lib/libmyslam.so: undefined reference to `cs_di_amd'
../../lib/libmyslam.so: undefined reference to `cs_di_nfree'
../../lib/libmyslam.so: undefined reference to `cs_di_calloc'
../../lib/libmyslam.so: undefined reference to `cs_di_cumsum'
../../lib/libmyslam.so: undefined reference to `cs_di_symperm'
../../lib/libmyslam.so: undefined reference to `cs_di_pinv'
../../lib/libmyslam.so: undefined reference to `cs_di_counts'
../../lib/libmyslam.so: undefined reference to `cs_di_malloc'
../../lib/libmyslam.so: undefined reference to `cs_di_spfree'
../../lib/libmyslam.so: undefined reference to `g2o::csparse_extension::cs_cholsolsymb(cs_di_sparse const*, double*, cs_di_symbolic const*, double*, int*)'
../../lib/libmyslam.so: undefined reference to `cs_di_free'
../../lib/libmyslam.so: undefined reference to `cs_di_sfree'
../../lib/libmyslam.so: undefined reference to `cs_di_schol'
../../lib/libmyslam.so: undefined reference to `cs_di_post'
../../lib/libmyslam.so: undefined reference to `g2o::csparse_extension::cs_chol_workspace(cs_di_sparse const*, cs_di_symbolic const*, int*, double*)'
../../lib/libmyslam.so: undefined reference to `cs_di_etree'
collect2: error: ld returned 1 exit status

home/paul/rtabmap/corelib/src/OptimizerG2O.cpp: In member function ‘virtual std::map<int, rtabmap::Transform> rtabmap::OptimizerG2O::optimize(int, const std::map<int, rtabmap::Transform>&, const std::multimap<int, rtabmap::Link>&, std::cxx11::list<std::map<int, rtabmap::Transform> >, double, int*)’:
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:200:50: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(SlamLinearEigenSolver*&)’
blockSolver = new SlamBlockSolver(linearSolver);
^
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:42:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: candidate: g2o::BlockSolver::BlockSolver(std::unique_ptr) [with Traits = g2o::BlockSolverTraits<-1, -1>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >]
BlockSolver::BlockSolver(std::unique_ptr linearSolver)
^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: no known conversion for argument 1 from ‘SlamLinearEigenSolver* {aka g2o::LinearSolverEigen<Eigen::Matrix<double, -1, -1> >}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> > > >’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:208:50: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(SlamLinearCholmodSolver
&)’
blockSolver = new SlamBlockSolver(linearSolver);
^
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:42:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: candidate: g2o::BlockSolver::BlockSolver(std::unique_ptr) [with Traits = g2o::BlockSolverTraits<-1, -1>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >]
BlockSolver::BlockSolver(std::unique_ptr linearSolver)
^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: no known conversion for argument 1 from ‘SlamLinearCholmodSolver* {aka g2o::LinearSolverCholmod<Eigen::Matrix<double, -1, -1> >}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> > > >’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:217:50: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(SlamLinearCSparseSolver
&)’
blockSolver = new SlamBlockSolver(linearSolver);
^
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:42:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: candidate: g2o::BlockSolver::BlockSolver(std::unique_ptr) [with Traits = g2o::BlockSolverTraits<-1, -1>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >]
BlockSolver::BlockSolver(std::unique_ptr linearSolver)
^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: no known conversion for argument 1 from ‘SlamLinearCSparseSolver* {aka g2o::LinearSolverCSparse<Eigen::Matrix<double, -1, -1> >}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> > > >’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:225:50: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(SlamLinearPCGSolver
&)’
blockSolver = new SlamBlockSolver(linearSolver);
^
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:42:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: candidate: g2o::BlockSolver::BlockSolver(std::unique_ptr) [with Traits = g2o::BlockSolverTraits<-1, -1>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >]
BlockSolver::BlockSolver(std::unique_ptr linearSolver)
^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: no known conversion for argument 1 from ‘SlamLinearPCGSolver* {aka g2o::LinearSolverPCG<Eigen::Matrix<double, -1, -1> >}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, -1, -1> > > >’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:230:80: error: no matching function for call to ‘g2o::OptimizationAlgorithmGaussNewton::OptimizationAlgorithmGaussNewton(SlamBlockSolver
&)’
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmGaussNewton(blockSolver));
^
In file included from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:45:0:
/usr/local/include/g2o/core/optimization_algorithm_gauss_newton.h:46:16: note: candidate: g2o::OptimizationAlgorithmGaussNewton::OptimizationAlgorithmGaussNewton(std::unique_ptrg2o::Solver)
explicit OptimizationAlgorithmGaussNewton(std::unique_ptr solver);
^
/usr/local/include/g2o/core/optimization_algorithm_gauss_newton.h:46:16: note: no known conversion for argument 1 from ‘SlamBlockSolver* {aka g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >}’ to ‘std::unique_ptrg2o::Solver’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:234:78: error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(SlamBlockSolver
&)’
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmLevenberg(blockSolver));
^
In file included from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:46:0:
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: candidate: g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::unique_ptrg2o::Solver)
explicit OptimizationAlgorithmLevenberg(std::unique_ptr solver);
^
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: no known conversion for argument 1 from ‘SlamBlockSolver* {aka g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >*}’ to ‘std::unique_ptrg2o::Solver’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp: In member function ‘virtual std::map<int, rtabmap::Transform> rtabmap::OptimizerG2O::optimizeBA(int, const std::map<int, rtabmap::Transform>&, const std::multimap<int, rtabmap::Link>&, const std::map<int, rtabmap::CameraModel>&, std::map<int, cv::Point3
>&, const std::map<int, std::map<int, cv::Point3
> >&, std::set)’:
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:699:76: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType
&)’
g2o::BlockSolver_6_3 * solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
^
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:42:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: candidate: g2o::BlockSolver::BlockSolver(std::unique_ptr) [with Traits = g2o::BlockSolverTraits<6, 3>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >]
BlockSolver::BlockSolver(std::unique_ptr linearSolver)
^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: no known conversion for argument 1 from ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType* {aka g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> > > >’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:704:79: error: no matching function for call to ‘g2o::OptimizationAlgorithmGaussNewton::OptimizationAlgorithmGaussNewton(g2o::BlockSolver_6_3
&)’
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmGaussNewton(solver_ptr));
^
In file included from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:45:0:
/usr/local/include/g2o/core/optimization_algorithm_gauss_newton.h:46:16: note: candidate: g2o::OptimizationAlgorithmGaussNewton::OptimizationAlgorithmGaussNewton(std::unique_ptrg2o::Solver)
explicit OptimizationAlgorithmGaussNewton(std::unique_ptr solver);
^
/usr/local/include/g2o/core/optimization_algorithm_gauss_newton.h:46:16: note: no known conversion for argument 1 from ‘g2o::BlockSolver_6_3* {aka g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >}’ to ‘std::unique_ptrg2o::Solver’
/home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:709:77: error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(g2o::BlockSolver_6_3
&)’
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmLevenberg(solver_ptr));
^
In file included from /home/paul/rtabmap/corelib/src/OptimizerG2O.cpp:46:0:
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: candidate: g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::unique_ptrg2o::Solver)
explicit OptimizationAlgorithmLevenberg(std::unique_ptr solver);
^
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: no known conversion for argument 1 from ‘g2o::BlockSolver_6_3* {aka g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >*}’ to ‘std::unique_ptrg2o::Solver'

/home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp: In function ‘void bundleAdjustment(std::vector<cv::Point3_<float> >, std::vector<cv::Point_<float> >, const cv::Mat&, cv::Mat&, cv::Mat&)’:
/home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:154:50: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType*&)’
     Block* solver_ptr = new Block ( linearSolver );     // 矩阵块求解器
                                                  ^
/home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:154:50: note: candidate is:
In file included from /usr/local/include/g2o/core/block_solver.h:199:0,
                 from /home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:10:
/usr/local/include/g2o/core/block_solver.hpp:40:1: note: g2o::BlockSolver<Traits>::BlockSolver(std::unique_ptr<typename Traits::LinearSolverType>) [with Traits = g2o::BlockSolverTraits<6, 3>; typename Traits::LinearSolverType = g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >]
 BlockSolver<Traits>::BlockSolver(std::unique_ptr<LinearSolverType> linearSolver)
 ^
/usr/local/include/g2o/core/block_solver.hpp:40:1: note:   no known conversion for argument 1 from ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType* {aka g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >*}’ to ‘std::unique_ptr<g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> >, std::default_delete<g2o::LinearSolver<Eigen::Matrix<double, 6, 6, 0> > > >’
/home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:155:104: error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(Block*&)’
     g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( solver_ptr );
                                                                                                        ^
/home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:155:104: note: candidate is:
In file included from /home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp:11:0:
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note: g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::unique_ptr<g2o::Solver>)
       explicit OptimizationAlgorithmLevenberg(std::unique_ptr<Solver> solver);
                ^
/usr/local/include/g2o/core/optimization_algorithm_levenberg.h:47:16: note:   no known conversion for argument 1 from ‘Block* {aka g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >*}’ to ‘std::unique_ptr<g2o::Solver>’
make[2]: *** [CMakeFiles/pose_estimation_3d2d.dir/pose_estimation_3d2d.cpp.o] 错误 1
make[1]: *** [CMakeFiles/pose_estimation_3d2d.dir/all] 错误 2
make: *** [all] 错误 2

猜你喜欢

转载自blog.csdn.net/unlimitedai/article/details/88698502