一、背景
最近正在看《视觉SLAM十四讲》,因为需要在Windows系统上使用,所以将原本在Ubuntu下的示例代码移动至Windows下进行运行。
本篇主要讲述我在配置Sophus这个库时候所遇到问题。
二、具体操作
(一)使用的平台
操作是在Windows11下visual studio 2022下面进行操作。
(二)下载Sophus
因为《视觉SLAM十四讲》所使用的Sophus版本不是最新版本。最新版本的Sophus是基于模版编写的。
因为Sophus模版类的使用需要fmt,比较复杂。所以采用非模版类的Sophus。
在Windows下建立一个空文件夹,需要注意的是,文件夹名称最好全部都为英文(防止中文路径问题出现)。
打开终端,在终端中输入下面命令
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff // 切换为非模板类的历史版本
下载完成后进入文件夹保存源代码处进行查看。核验是否是非模版类
(三)visual studio 2022下配置
这里放置sophus中的部分文件,若其余文件需要,也可以放入其中,步骤一样。
1.Eigen库的配置
首先建立一个空项目。
找到视图>>选择其他属性>>属性管理器
选择红色中圈住的。这个需要跟自己使用的C++解释器有关,需要对应。
右键后选择红色圈中的,添加新项目属性表。这里我添加的新的项目是Eigen。
双击新增的项目Eigen,进入其中进行编辑。将自己Eigen库路径添加进入即可。
可参考如下的博客Visual Studio下Eigen库环境配置_eigen/dense下载-CSDN博客
2.配置Sophus
这里以Sophus中so3.h和so3.cpp文件为例进行说明。
将so3.h文件放入头文件中。将so3.cpp放入源文件中。
右键项目,选择属性。
按照图片中圈出的部分,将so3.h和so3.cpp文件所在的文件夹的路径添加进入。否则会出现无法打开源文件的情况发生。
可以参考这篇博客C++无法打开库文件/无法打开源文件_c++ 无法打开 源 文件-CSDN博客
3.可能出现问题说明
如果编译时候发现M_PI发现识别。解决方法是在so3.h文件中加入这两句
#define _USE_MATH_DEFINES
#include <math.h>
原因可以参考如何在C/C++中使用pi (π) 值_c++ 引用pi-CSDN博客
完成后,可以发现程序能够运行成功。不方便之处是每次联立一个项目都需要手动操作添加。