slam14讲 ch7编译遇到的几个问题

学习SLAM十四讲ch7的时候,在orb _cv这一步就卡住了,编译出了一堆问题,没办法生成orb_cv这个可执行文件,在网上找了一些博客,解决了一些,但还有一个报错提到的文章很少,我解决之后写下来,希望能帮到也遇到这个问题的人。

问题1:G2O版本问题

error: ‘make_unique’ is not a member of ‘g2o’; did you mean ‘std::make_unique’?

这个问题主要是g2o的版本出错,不要用git上的最新版本,换成20230223版本的就行了。安装方法如下:

进入g2o官网:GitHub - RainerKuemmerle/g2o: g2o: A General Framework for Graph Optimization

按下图箭头指示打开更多发行版本,选择20230223版本,下载至电脑

下载后,提取,进入提取后的文件夹

打开终端,输入以下命令

mkdir build
cd build
cmake ..
make -j16
sudo make install

再次编译即可。

问题2:未对fmt引用

g2o版本问题解决后,再次编译,还是报错,但是没有红色的error了,全是白色字体的错误,如下:

可以看到,错误提示fmt出了问题,我复制错误信息第一行,csdn查找了一下,发现是没有对fmt进行引用,需要修改CMakeList.txt文件。

因为错误信息出现在pose_estimation_3d2d.cpp文件中,所以对CMakeList.txt中这一部分进行修改(找到这一部分,只修改这里即可)。如下:

原代码:

add_executable(pose_estimation_3d2d pose_estimation_3d2d.cpp)
target_link_libraries(pose_estimation_3d2d
        g2o_core g2o_stuff
        ${OpenCV_LIBS})

修改后:

add_executable(pose_estimation_3d2d pose_estimation_3d2d.cpp)
target_link_libraries(pose_estimation_3d2d
        g2o_core g2o_stuff
        ${OpenCV_LIBS} fmt)

也就是在最后括号内加上三个字母  fmt  即可。

再次make,同样的错误发生在了pose_estimation_3d3d.cpp文件下,于是对CMakeList.txt中这一部分进行修改,步骤同上:

原代码:

add_executable(pose_estimation_3d3d pose_estimation_3d3d.cpp)
target_link_libraries(pose_estimation_3d3d
        g2o_core g2o_stuff
        ${OpenCV_LIBS})

 修改后:

add_executable(pose_estimation_3d3d pose_estimation_3d3d.cpp)
target_link_libraries(pose_estimation_3d3d
        g2o_core g2o_stuff
        ${OpenCV_LIBS} fmt)

再次make,没有错误发生。完美解决。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值