c ++,g2o(Graph-Framework),qcreator,未定义的方法引用

时间:2013-10-07 21:41:09

标签: c++ qt-creator

我正在尝试在c ++项目中使用g2o库。我在两个系统中安装了库

  • OpenSuse - 通过zypper安装的依赖关系,g2o通过编译方向
  • Ubuntu - 所有依赖关系通过apt-get,g2o通过编译方向

我的.pro文件包含这些,以便链接到.so库:

INCLUDEPATH +=   /home/rhun/data/Coding/g2o/trunk/lib/
LIBS        += -L/home/rhun/data/Coding/g2o/trunk/lib/
LIBS += -lg2o_calibration_odom_laser
LIBS += -lg2o_cli
LIBS += -lg2o_core
LIBS += -lg2o_csparse_extension 
LIBS += -lg2o_ext_freeglut_minimal
LIBS += -lg2o_interface
LIBS += -lg2o_parser
LIBS += -lg2o_simulator
LIBS += -lg2o_solver_csparse
LIBS += -lg2o_solver_dense
LIBS += -lg2o_solver_eigen
LIBS += -lg2o_solver_pcg
LIBS += -lg2o_solver_slam2d_linear
LIBS += -lg2o_solver_structure_only
LIBS += -lg2o_stuff
LIBS += -lg2o_tutorial_slam2d
LIBS += -lg2o_types_data
LIBS += -lg2o_types_icp
LIBS += -lg2o_types_sba
LIBS += -lg2o_types_sclam2d
LIBS += -lg2o_types_sim3
LIBS += -lg2o_types_slam2d
LIBS += -lg2o_types_slam3d
INCLUDEPATH += /usr/include/suitesparse/  
INCLUDEPATH += /home/rhun/data/Coding/g2o/tags/before-github-sync/
INCLUDEPATH += /home/rhun/data/Coding/g2o/tags/before-github-sync/EXTERNAL/eigen3/
INCLUDEPATH += /home/rhun/data/Coding/g2o/trunk/build/

当我尝试#include的时候,我可以在下拉菜单中看到所有内容。

但是,我一直收到这条消息:

error: undefined reference to 'g2o::SparseOptimizer::setMethod(g2o::SparseOptimizer::Method)'

我在这里呆了好几个小时。你可以请一些亮点吗?谢谢! :)

1 个答案:

答案 0 :(得分:0)

好的,我下载了发送here (http://openslam.org/g2o.html)的g2o版本,但它对我不起作用。一旦我下载ships through github的版本,问题就消失了。 github版本是最新版本,并且创建者在需要时也会应用补丁,这意味着在安装过程中也不需要调整makefile。

唯一的“问题”是,这个新版本引入了一些变化,这使得在线发现的一些例子有点过时,但没什么可怕的;) (通过查看旧教程,新示例,文档和源代码来启动和运行并不困难)

我将在此复制Rainer Kuemmerle(g2o的作者)的答案,找到here

  

事实上,API发生了很大变化,导致OpenSLAM的代码案例与github上托管的当前代码不兼容。关于此,我们无能为力,添加新功能需要我们打破旧的API。   最好的方法是调整使用g2o的代码。   例如,必须通过设置相应的OptimizationAlgorithm来替换setMethod。