gaoxiang12 / slambook

MIT License
6.79k stars 3.25k forks source link

ch10 g2o_custombundle 编译报错 #208

Open suzhengpeng opened 5 years ago

suzhengpeng commented 5 years ago

image 如上图所示。g2o的版本是 https://github.com/RainerKuemmerle/g2o 下载的最新版。

gaoxiang12 commented 5 years ago

请使用本仓库自带的g2o版本。本书出版之后g2o有较大更新,主要将祼指针接口改成了智能指针,所以原先代码在新版本中编译不过。

chauchy-Liu commented 1 year ago

Undefined symbols for architecture x86_64: [build] "g2o::HyperGraph::Edge::resize(unsigned long)", referenced from: [build] g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL>::resize(unsigned long) in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::HyperGraph::vertex(int)", referenced from: [build] g2o::OptimizableGraph::vertex(int) in g2o_bundle.cpp.o [build] "g2o::RobustKernel::RobustKernel()", referenced from: [build] g2o::RobustKernelHuber::RobustKernelHuber() in g2o_bundle.cpp.o [build] "g2o::writeCCSMatrix(std::1::basic_string<char, std::__1::char_traits, std::1::allocator > const&, int, int, int const, int const, double const, bool)", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::saveMatrix(std::1::basic_string<char, std::__1::char_traits, std::1::allocator > const&) in g2o_bundle.cpp.o [build] "g2o::MatrixStructure::alloc(int, int)", referenced from: [build] g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::fillBlockStructure(g2o::MatrixStructure&) const in g2o_bundle.cpp.o [build] "g2o::MatrixStructure::MatrixStructure()", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::LinearSolverCholmod() in g2o_bundle.cpp.o [build] "g2o::MatrixStructure::~MatrixStructure()", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::LinearSolverCholmod() in g2o_bundle.cpp.o [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::~LinearSolverCholmod() in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::setVerbose(bool)", referenced from: [build] SolveProblem(char const, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::setAlgorithm(g2o::OptimizationAlgorithm)", referenced from: [build] SetSolverOptionsFromFlags(BALProblem, BundleParams const&, g2o::SparseOptimizer) in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::initializeOptimization(int)", referenced from: [build] SolveProblem(char const, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::optimize(int, bool)", referenced from: [build] SolveProblem(char const, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::SparseOptimizer()", referenced from: [build] SolveProblem(char const, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::SparseOptimizer::~SparseOptimizer()", referenced from: [build] SolveProblem(char const, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::resolveCaches()", referenced from: [build] vtable for EdgeObservationBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseBinaryEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::setRobustKernel(g2o::RobustKernel)", referenced from: [build] BuildProblem(BALProblem const, g2o::SparseOptimizer, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::setMeasurementData(double const)", referenced from: [build] vtable for EdgeObservationBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseBinaryEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::setMeasurementFromState()", referenced from: [build] vtable for EdgeObservationBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseBinaryEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::Edge()", referenced from: [build] g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> >::BaseEdge() in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::~Edge()", referenced from: [build] g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> >::BaseEdge() in g2o_bundle.cpp.o [build] g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> >::~BaseEdge() in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::updateCache()", referenced from: [build] vtable for VertexCameraBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] vtable for VertexPointBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::Vertex()", referenced from: [build] g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> >::BaseVertex() in g2o_bundle.cpp.o [build] g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::BaseVertex() in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::~Vertex()", referenced from: [build] g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> >::BaseVertex() in g2o_bundle.cpp.o [build] g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> >::~BaseVertex() in g2o_bundle.cpp.o [build] g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::BaseVertex() in g2o_bundle.cpp.o [build] g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::~BaseVertex() in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::addEdge(g2o::OptimizableGraph::Edge)", referenced from: [build] BuildProblem(BALProblem const, g2o::SparseOptimizer, BundleParams const&) in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::addVertex(g2o::OptimizableGraph::Vertex, g2o::HyperGraph::Data)", referenced from: [build] g2o::OptimizableGraph::addVertex(g2o::OptimizableGraph::Vertex) in g2o_bundle.cpp.o [build] "g2o::G2OBatchStatistics::_globalStats", referenced from: [build] g2o::G2OBatchStatistics::globalStats() in g2o_bundle.cpp.o [build] "g2o::get_monotonic_time()", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solve(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&, double, double) in g2o_bundle.cpp.o [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::computeCholmodFactor(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&, double&) in g2o_bundle.cpp.o [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::computeSymbolicDecomposition(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&) in g2o_bundle.cpp.o [build] g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >::solve() in g2o_bundle.cpp.o [build] g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >::computeMarginals(g2o::SparseBlockMatrix<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, std::1::vector<std::1::pair<int, int>, std::1::allocator<std::1::pair<int, int> > > const&) in g2o_bundle.cpp.o [build] "g2o::MarginalCovarianceCholesky::computeCovariance(double, std::1::vector<int, std::1::allocator > const&)", referenced from: [build] g2o::LinearSolverCCS<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solveBlocks(double&, g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&)::'lambda'(g2o::MarginalCovarianceCholesky&)::operator()(g2o::MarginalCovarianceCholesky&) const in g2o_bundle.cpp.o [build] "g2o::MarginalCovarianceCholesky::computeCovariance(g2o::SparseBlockMatrix<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, std::1::vector<int, std::1::allocator > const&, std::1::vector<std::1::pair<int, int>, std::1::allocator<std::1::pair<int, int> > > const&)", referenced from: [build] g2o::LinearSolverCCS<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solvePattern(g2o::SparseBlockMatrix<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, std::1::vector<std::1::pair<int, int>, std::1::allocator<std::1::pair<int, int> > > const&, g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&)::'lambda'(g2o::MarginalCovarianceCholesky&)::operator()(g2o::MarginalCovarianceCholesky&) const in g2o_bundle.cpp.o [build] "g2o::MarginalCovarianceCholesky::setCholeskyFactor(int, int, int, double, int)", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solveBlocks_impl(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&, std::1::function<void (g2o::MarginalCovarianceCholesky&)>) in g2o_bundle.cpp.o [build] "g2o::MarginalCovarianceCholesky::MarginalCovarianceCholesky()", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solveBlocks_impl(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&, std::1::function<void (g2o::MarginalCovarianceCholesky&)>) in g2o_bundle.cpp.o [build] "g2o::MarginalCovarianceCholesky::~MarginalCovarianceCholesky()", referenced from: [build] g2o::LinearSolverCholmod<Eigen::Matrix<double, 9, 9, 0, 9, 9> >::solveBlocks_impl(g2o::SparseBlockMatrix<Eigen::Matrix<double, 9, 9, 0, 9, 9> > const&, std::1::function<void (g2o::MarginalCovarianceCholesky&)>) in g2o_bundle.cpp.o [build] "g2o::OptimizationAlgorithmDogleg::OptimizationAlgorithmDogleg(std::__1::unique_ptr<g2o::BlockSolverBase, std::1::default_delete >)", referenced from: [build] SetSolverOptionsFromFlags(BALProblem, BundleParams const&, g2o::SparseOptimizer) in g2o_bundle.cpp.o [build] "g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(std::__1::unique_ptr<g2o::Solver, std::__1::default_delete >)", referenced from: [build] SetSolverOptionsFromFlags(BALProblem, BundleParams const&, g2o::SparseOptimizer) in g2o_bundle.cpp.o [build] "g2o::Solver::resizeVector(unsigned long)", referenced from: [build] g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >::updateStructure(std::__1::vector<g2o::HyperGraph::Vertex, std::1::allocator<g2o::HyperGraph::Vertex*> > const&, std::1::set<g2o::HyperGraph::Edge, std::__1::less<g2o::HyperGraph::Edge>, std::__1::allocator<g2o::HyperGraph::Edge> > const&) in g2o_bundle.cpp.o [build] g2o::BlockSolver<g2o::BlockSolverTraits<9, 3> >::resize(int, int, int, int, int) in g2o_bundle.cpp.o [build] "g2o::Solver::Solver()", referenced from: [build] g2o::BlockSolverBase::BlockSolverBase() in g2o_bundle.cpp.o [build] "g2o::Solver::~Solver()", referenced from: [build] g2o::BlockSolverBase::~BlockSolverBase() in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::getMeasurementData(double) const", referenced from: [build] vtable for EdgeObservationBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseBinaryEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Edge::measurementDimension() const", referenced from: [build] vtable for EdgeObservationBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseBinaryEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseFixedSizedEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1>, VertexCameraBAL, VertexPointBAL> in g2o_bundle.cpp.o [build] vtable for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::getEstimateData(double) const", referenced from: [build] vtable for VertexCameraBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] vtable for VertexPointBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::estimateDimension() const", referenced from: [build] vtable for VertexCameraBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] vtable for VertexPointBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::getMinimalEstimateData(double) const", referenced from: [build] vtable for VertexCameraBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] vtable for VertexPointBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "g2o::OptimizableGraph::Vertex::minimalEstimateDimension() const", referenced from: [build] vtable for VertexCameraBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] vtable for VertexPointBAL in g2o_bundle.cpp.o [build] vtable for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "typeinfo for g2o::OptimizableGraph::Edge", referenced from: [build] typeinfo for g2o::BaseEdge<2, Eigen::Matrix<double, 2, 1, 0, 2, 1> > in g2o_bundle.cpp.o [build] "typeinfo for g2o::OptimizableGraph::Vertex", referenced from: [build] BuildProblem(BALProblem const, g2o::SparseOptimizer, BundleParams const&) in g2o_bundle.cpp.o [build] WriteToBALProblem(BALProblem, g2o::SparseOptimizer) in g2o_bundle.cpp.o [build] typeinfo for g2o::BaseVertex<9, Eigen::Matrix<double, -1, 1, 0, -1, 1> > in g2o_bundle.cpp.o [build] typeinfo for g2o::BaseVertex<3, Eigen::Matrix<double, 3, 1, 0, 3, 1> > in g2o_bundle.cpp.o [build] "typeinfo for g2o::Solver", referenced from: [build] typeinfo for g2o::BlockSolverBase in g2o_bundle.cpp.o [build] "vtable for g2o::RobustKernelHuber", referenced from: [build] g2o::RobustKernelHuber::RobustKernelHuber() in g2o_bundle.cpp.o [build] NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. [build] ld: symbol(s) not found for architecture x86_64 [build] clang: error: linker command failed with exit code 1 (use -v to see invocation) [build] make[2]: [/Users/liuchuanxi/slam/ch10/g2o_custombundle/bin/g2o_customBundle] Error 1 [build] make[1]: [CMakeFiles/g2o_customBundle.dir/all] Error 2 [build] make: *** [all] Error 2 [proc] The command: /usr/local/bin/cmake --build /Users/liuchuanxi/slam/ch10/build --config Debug --target all -- exited with code: 2 and signal: null [build] Build finished with exit code 2