c++;,g2o(图形框架),qcreator,未定义的方法引用 我试图在C++项目中使用G2O库。我在两个系统中安装了库 OpenSuse-依赖项通过zypper安装,g2o根据说明编译 Ubuntu-所有依赖项通过apt get,g2o按照说明编译

c++;,g2o(图形框架),qcreator,未定义的方法引用 我试图在C++项目中使用G2O库。我在两个系统中安装了库 OpenSuse-依赖项通过zypper安装,g2o根据说明编译 Ubuntu-所有依赖项通过apt get,g2o按照说明编译,c++,qt-creator,C++,Qt Creator,My.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 +=

My.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/
当我尝试包含内容时,我可以在下拉菜单中看到所有内容

然而,我一直得到这样的信息:

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

我被困在这里好几个小时了。你能帮我弄点光吗?谢谢!:)

好的,我下载了发布的g2o版本,但它对我不起作用。一旦我下载了那个版本,问题就消失了。github版本是最新的版本,并且在创建者需要时应用补丁,这意味着在安装过程中也不需要调整makefiles

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

我将在这里复制(g2o作者)的答案,发现

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