【视觉SLAM】Win10+VS2017配置ORB_SLAM2
前言
说明
本文将在Windows 10和Visual Studio 2017的基础上,记录ORB_SLAM2的配置过程。
【注意】:本文把源代码、编译源代码的VS工程文件夹都放在D盘根目录下,把最后安装位置、编译后的库(包括include目录、lib目录、bin目录等)都放在F盘根目录下!
工作环境
- 硬件
CPU:Intel® Core™ i5-7200U
GPU:NVIDIA GeForce 940MX
内存大小:12GB - 软件
操作系统:Windows 10 专业版 20H2
IDE:Microsoft Visual Studio Community 2017:版本15.9.24
需要准备的东西
- 【某工具】懂的都懂,求审核通过。。。。参考我之前写的一篇博客:【某工具】
- 电脑必须带NVIDIA显卡且已装好显卡驱动,内存至少8GB。
安装CUDA
安装CUDA是为了与之后的OpenCV进行联合编译。
查看CUDA版本
打开NVIDIA控制面板
,点击“系统信息”,切换到“组件”,看NVCUDA64.DLL的产品名称。比如我这里是CUDA11.0.208
,那么就准备安装CUDA11.0版本。
下载安装CUDA
点击进入官网下载地址:CUDA官网下载
根据自己的CUDA版本选择。比如我这里下载CUDA Toolkit 11.0
,根据实际情况,选择本地安装包(安装包很大,但是安装过程不需要网络)还是网络安装包(安装包很小,但是安装过程需要网络)。比如这里选择了本地安装包。
下载完成后,以管理员方式运行。
注意:下图这里只是选择“安装包的解压(Extraction)路径”,并不是最后的CUDA安装位置!解压到桌面也可以!我这里解压到D盘下的CUDA Extraction文件夹中。
解压完成后,会自动打开CUDA安装程序!
选择“自定义”,因为本机是首次安装,所以除了第二项“NVIDIA GeForce Experience”之外都勾选上。
最后,选择安装目录。这才是最后CUDA的安装目录。这里选择都安装在“F:\CUDA11.0”目录下。
等待安装完成!安装程序关闭后,会自动删除解压文件夹(D:\CUDA Extraction)。
下载安装CuDNN
从官网下载CuDNN:CuDNN下载,需要先申请一个NVIDIA账号。
根据CUDA版本选择CuDNN版本(比如我这里的CUDA版本为11.0,因此我选择CuDNN v8.1.1),下载Windows平台的CuDNN库。
下载完成后,解压会得到一个名为“cuda”的文件夹。直接把其中的“include”文件夹、“bin”文件夹、“lib”文件夹直接复制到CUDA的安装目录下。
检测CUDA是否安装成功
- 打开cmd,输入
nvcc -V
命令,出现类似于下图的输出则安装成功!
- 找到CUDA安装目录下的“extras\demo_suite”文件夹(比如我这里是“F:\CUDA11.0\extras\demo_suite\”),按住Shift键,在此处右键,在此处打开PowerShell窗口。输入
.\deviceQuery.exe
命令,如果出现类似于下图的输出则安装成功!并且要记住“CUDA Capability Major/Minor version number”的值(这里为5.0)。
至此,CUDA安装完成!
安装CMake 3.20.6
CMake用来给之后要下载的源代码创建Visual Studio工程!
在官网给的github网址上找到CMake 3.20.6的压缩包:CMake 3.20.6-Github,下载.zip格式的压缩包。
如果网站进不去,请用【某工具】!
解压到适当位置并给文件夹重命名(我这里是F:\cmake-3.20.6),然后把bin目录下的“cmake-gui.exe”(我这里是"F:\cmake-3.20.6\bin\cmake-gui.exe")粘贴快捷方式到桌面上。
至此,CMake3.20.6安装完成!
安装Eigen 3.3.4
下载源代码
首先从官网下载源代码。解压后放在D盘根目录下。
再在D盘根目录下新建文件夹“Eigen-Build”作为编译Eigen的VS工程文件夹。
在F盘下新建文件夹“Eigen3.3.4”作为编译完成后的安装文件夹。
使用CMake生成VS工程
管理员方式打开CMake3.20.6,
设置好Eigen源代码目录(D:/eigen-3.3.4)和工程目录(D:/Eigen-Build)。
点击“Configure”,设置环境。
不出意外的话,应该可以看到输出框中的“Configuring done”了(红色的警告不用管)!
把CMAKE_INSTALL_PREFIX
变量的值设置为Eigen的安装目录(我这里是F:/Eigen3.3.4)
再次点击“Configure”!再次显示“Configuring done”!
点击“Geenerate”生成VS工程,输出“Generating done”!
再点击“Open Project”,会自动地以管理员方式打开Visual Studio 2017。
编译并安装Eigen
等待VS分析工程和文件完毕后,确保VS当前是“Release
”和“×64
”模式,在“解决方案资源管理器”中,右键“ALL_BUILD
”,点击“生成”。
可以看到全部输出成功,再右键“INSTALL
”,点击“生成”。这时VS会把Eigen安装到之前设置的CMAKE_INSTALL_PREFIX
变量的值的位置处(比如我这里是F:/Eigen3.3.4)
最后,把“F:\Eigen3.3.4\share\eigen3\cmake
”中的四个.cmake文件复制到“F:\Eigen3.3.4\include\eigen3
”目录下。
至此,Eigen安装完成!
测试Eigen
接下来测试Eigen是否编译安装成功。
测试代码出自:https://blog.csdn.net/hijack00/article/details/52229076。
在任意位置新创建一个VS空项目,命名为TestEigen
,再添加源文件,命名为main.cpp
。
复制以上链接中提供的测试代码。
将环境设置为“Debug”和“×64”,然后在VS中打开属性管理器
界面,右键“Debug|×64”,选择“添加新项目属性表”。这是为了避免之后每次使用到Eigen都要重新设置目录,因此直接把Eigen的目录存放在属性表中,需要用的时候直接调用就可。
属性表的名称就设置为“Eigen64.props
”,点击添加。然后双击刚新建的属性表,将“VC++目录
”中的“包含目录
”添加一项:F:\Eigen3.3.4\include\eigen3
。
按快捷键Ctrl + F5运行,若出现如下图的结果,则表示Eigen编译并安装成功!
【注意】将测试Eigen创建的“Eigen64.props
”属性表(可以在工程文件夹中找到)放到一个合适的位置保留,方便以后调用!
安装OpenCV 3.4.2
使用CMake生成VS工程
如果直接使用OpenCV官网下载下来的源代码的话,会产生比较多的繁琐问题。
因此,我已经将源代码修改好,可以从这里下载:
链接:https://p【防封】an.ba【防封】idu.com/s/1DeCH1【防封】Fm2J5vW【防封】RJ3_yVTcKA
提取码:6666
opencv-3.4.2.rar
和opencv_contrib-3.4.rar
都要下载,且都解压到D盘根目录下(我这里都是放在D盘根目录下)。
管理员方式打开CMake3.20.6
设置好OpenCV源代码目录(D:/opencv-3.4.2)和工程目录(D:/OpenCV-Build)。注意是OpenCV的源代码目录而不是opencv_contrib的源代码目录!
点击“Configure”,选择Visual Studio版本和处理器架构。
稍微等待后,应该可以看到输出框中的“Configuring done”了!
链接:https://pan.baidu.com/s/1pfwyof3oJA2PxS4OlrkX6A
提取码:6666
【重要】从https://pa【防封】n.ba【防封】idu.co【防封】m/s/1pfwy【防封】of3oJA2PxS4Olr【防封】kX6A(提取码:6666)下载nppicom.lib
和nppim.lib
库文件,放在CUDA安装目录下的lib\x64
目录下(如F:\CUDA11.0\lib\x64)!
找到OPENCV_EXTRA_MODULES_PATH
参数,将其设置为opencv_contrib中的modules目录,注意:目录中应该使用/
而不是\
!!
在搜索框中搜索“CUDA”,勾选WITH_CUDA
除此之外,还要勾选BUILD_opencv_world
参数。
另外,找到“EIGEN_INCLUDE_PATH
”参数,将其值设置为Eigen3.3.4的路径(F:/Eigen3.3.4/include/eigen3)
在F盘下新建文件夹“OpenCV3.4.2”用于安装目录,将“CMAKE_INSTALL_PREFIX
”参数设置为F:/OpenCV3.4.2。
再次点击“Configure”!
“Configuring done”之后,给CUDA_ARCH_BIN
参数设置为之前要记住的“CUDA Capability Major/Minor version number”的值(这里为5.0),勾选“CUDA_FAST_MATH
”选项。
再次点击“Configure”!
没出问题的话,再点击“Generate”!
看到“Generating done”的话,再点击“Open Project”打开VS工程!
编译并安装OpenCV3.4.2
等待VS分析解决方案完毕后,确保VS当前是“Debug
”和“×64
”模式,
在“解决方案资源管理器”中,右键“opencv_world
”,点击“生成
”。
等待许久后,提示“成功”!
为了防止漏掉项目,再次右键“opencv_world
”,点击“生成
”!
继续生成,直到输出以下内容:
再右键“ALL_BUILD
”,点击“生成
”,生成成功后,同样地,反复多次生成。
再右键“INSTALL
”,点击“生成
”。VS会把OpenCV的Debug库
安装到指定目录下(F:/OpenCV3.4.2
)。
至此,OpenCV3.4.2的Debug库
安装完成!
再来安装OpenCV3.4.2的Release库
!
切换到“Release
”和“×64
”模式,同样地,右键“opencv_world
”项目,点击“生成
”!
生成成功后,仿照之前的操作再次右键“opencv_world
”,点击“生成
”!
同样地,再右键“ALL_BUILD
”,点击“生成
”,生成成功后,也要反复多次生成。
最后,右键“INSTALL
”,点击“生成
”。
至此,OpenCV3.4.2安装完成!
安装Glew 2.1.0和freeglut 3.2.1
下载源代码
从官网给的链接下载Glew源代码。需要【某工具】!!!将解压后得到的glew-2.1.0
文件夹移动到D盘。
从官网给的链接下载freeglut源代码。需要【某工具】!!!
【注意】这个解压缩过程可能需要管理员权限!
将解压后得到的freeglut-3.2.0
文件夹移动到D盘。
编译Glew 2.1.0
双击打开D:\glew-2.1.0\build\vc12
下的glew.sln
解决方案。
VS弹出“重定向项目”对话框,点击“确定”。
确保VS是“Debug
”和“×64
”模式,右键选择“glew_shared
”项目,点击“生成”!
如果不出意外的话,应该为提示“生成成功”!
右键选择“glew_static
”项目,打开属性,确保属性表当前也是“Debug
”和“×64
”模式。
将C/C++→代码生成→运行库,设置为“多线程调试MTd”!
确定后,右键选择“glew_static
”项目,点击“生成”!
生成成功!
至此,Glew 2.1.0的Debug库
编译完成!
再来编译Glew 2.1.0的Release库
!
确保VS是“Release
”和“×64
”模式,右键选择“glew_shared
”项目,打开属性,确保属性表当前也是“Release
”和“×64
”模式。
将C/C++→代码生成→运行库,设置为“多线程DLL(MD)”!
确定后,右键选择“glew_shared
”项目,点击“生成”!
再右键选择“glew_static
”项目,点击“生成”!
至此,Glew 2.1.0编译完成!
编译freeglut 3.2.1
在D盘下新建glut-Build
文件夹。
以管理员方式权限打开CMake,设置好源代码目录
和工程目录
,点击“Configure”。
配置完成后点击“Generate”生成VS工程。
最后点击“Open Project”打开工程。
确保VS当前是“Debug
”和“×64
”模式,
在“解决方案资源管理器”中,右键“ALL_BUILD
”,点击“生成
”。同样地,需要反复多次生成!
切换到“Release
”和“×64
”模式,在“解决方案资源管理器”中,右键“ALL_BUILD
”,点击“生成
”。同样地,需要反复多次生成!
安装
在F盘下新建OpenGL
文件夹,再在其中创建bin
、include
、lib
文件夹。
把以下目录的所有文件复制到bin
目录下:
D:\glut-Build\bin\Debug
D:\glut-Build\bin\Release
D:\glew-2.1.0\bin\Debug\x64
D:\glew-2.1.0\bin\Release\x64
把以下目录的所有内容复制到include
目录下(把整个GL文件夹复制过去):
D:\freeglut-3.2.0\include
D:\glew-2.1.0\include
把以下目录的所有文件复制到lib
目录下
D:\glew-2.1.0\lib\Debug\x64
D:\glew-2.1.0\lib\Release\x64
D:\glut-Build\lib\Debug
D:\glut-Build\lib\Release
至此,Glew 2.1.0和freeglut 3.2.1安装完成!
安装Pangolin
从Pangolin-Github网址中下载源代码(需要【某工具】),解压得到的Pangolin-master
文件夹移动到D盘,在D盘新建Pangolin-Build
文件夹用作工程文件夹。
在F盘新建pangolin
文件夹,再在pangolin
中新建bin
、include
、lib
三个文件夹,再在bin
和lib
中新建Debug
和Release
文件夹。
以管理员权限运行CMake,设置好源代码目录和工程目录。
点击“Configure”开始配置。若出现以下错误,则将Eigen3_DIR
设置为F:/Eigen3.3.4/include/eigen3
。然后再次点击“Configure”!
CMake Error at components/pango_geometry/CMakeLists.txt:3 (find_package):
Could not find a package configuration file provided by “Eigen3” with any
of the following names:
Eigen3Config.cmake
eigen3-config.cmake
Add the installation prefix of “Eigen3” to CMAKE_PREFIX_PATH or set
“Eigen3_DIR” to a directory containing one of the above files. If “Eigen3”
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
CMakeLists.txt:93 (include)
若出现以下错误,则将GLEW_INCLUDE_DIR
设置为F:/OpenGL/include
,将GLEW_LIBRARY
设置为F:/OpenGL/lib/glew32.lib
。然后再次点击“Configure”!
CMake Error at cmake/FindGLEW.cmake:51 (MESSAGE):
Could not find GLEW
Call Stack (most recent call first):
components/pango_opengl/CMakeLists.txt:41 (find_package)
CMakeLists.txt:93 (include)
配置完成后,点击“Generate”!
如果出现很多个以下错误,则《不必管他》
!直接点击“Open Project”打开VS工程!
CMake Error in CMakeLists.txt:
Imported target “Eigen3::Eigen” includes non-existent path
“F://include/eigen3”
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not provide.
首先,确保VS当前是“Debug
”和“×64
”模式!在属性管理器
中一次性选中除了ALL_BUILD
、INSTALL
、uninstall
、ZERO_CHECK
之外的所有工程,右键属性
,确保当前属性表也是“Debug
”和“×64
”模式,在VC++目录
→包含目录
中添加以下两条:
F:\Eigen3.3.4\include\eigen3
F:\OpenGL\include
再将属性页
的模式(不是VS的模式!)切换成“Release
”和“×64
”模式,作同样的设置!
点击确认,关闭属性后,在解决方案资源管理器
窗口右键选择pango_python
项目,点击“生成”!
生成成功后,再右键选择ALL_BUILD
项目,点击“生成”!
如果出现了以下报错:
error C2039: “min”: 不是“std”的成员
则双击错误列表
中的这一项,会跳转到image_io_packed12bit.cpp
文件,在文件开头加上#include <algorithm>
。
保存后,重新右键选择ALL_BUILD
项目,点击“生成”!同样地,要多次、反复生成!
再右键选择INSTALL
项目,点击“生成”!多次生成!
把以下文件夹的内容复制到F:\Pangolin\bin\Debug
中:
C:\Program Files\Pangolin\bin
把以下文件夹的内容复制到F:\Pangolin\include
中:
C:\Program Files\Pangolin\include
把以下文件夹的内容复制到F:\Pangolin\lib\Debug
中:
C:\Program Files\Pangolin\lib
然后删除"C:\Program Files\Pangolin"
文件夹!
再把VS切换成“Release
”和“×64
”模式,类似前面的操作,先生成pango_python
项目,再生成ALL_BUILD
项目,最后就生成INSTALL
项目!
全部完成后,把以下文件夹的内容复制到F:\Pangolin\bin\Release
中:
C:\Program Files\Pangolin\bin
把以下文件夹的内容复制到F:\Pangolin\lib\Release
中:
C:\Program Files\Pangolin\lib
然后删除"C:\Program Files\Pangolin"
文件夹!
至此,Pangolin安装完成!
安装ORB_SLAM2
下载源代码
从ORB_SLAM2-Github中下载源代码(需要【某工具】)!
把解压得到的ORB_SLAM2-master
文件夹移动到D盘!
在安装ORB_SLAM2之前,还需要编译DBoW2和g2o这两个依赖库!
编译DBoW2
把"D:\ORB_SLAM2-master\Thirdparty\DBoW2"
文件夹复制到D盘,再在D盘下新建DBoW2-Build
文件夹用于工程文件夹!
以管理员权限打开CMake,设置源代码目录和工程文件夹目录
点击“Configure”!如果出现以下错误,则将OpenCV_DIR
设置为“F:/OpenCV3.4.2
”
CMake Error at CMakeLists.txt:31 (message):
OpenCV > 2.4.3 not found.
再次点击“Configure”,应该就没问题了。
点击“Generate”,再点击“Open Project”。
首先,确保VS当前是“Debug
”和“×64
”模式!右键选择ALL_BUILD
项目,点击“生成”!
如果出现以下错误:
fatal error C1083: 无法打开包括文件: “stdint-gcc.h”: No such file or directory
则双击错误列表
中的这一项,会跳转到FORB.cpp
文件,将该文件的#include <stdint-gcc.h>
这一行注释掉!
保存后,重新“生成”!应该可以生成成功了。
再打开DBoW2
项目的属性页,确保属性页也是“Debug
”和“×64
”模式!把常规
→目标文件扩展名
设置为.lib
,把配置类型
设置为静态库
。把C/C++
→代码生成
→运行库
,设置为“多线程调试”!
点击确定后,重新“生成”ALL_BUILD
项目!
再把VS切换成“Release
”和“×64
”模式,直接生成“ALL_BUILD
”项目!
类似于前面的操作,再把DBoW2
项目的“Release
”和“×64
属性做如下设置:
点击确定后,再生成一次“ALL_BUILD
”项目!
生成完毕后,DBoW2就编译完成!
编译g2o
把"D:\ORB_SLAM2-master\Thirdparty\g2o"
文件夹复制到D盘,再在D盘下新建g2o-Build
文件夹用于工程文件夹!
以管理员权限打开CMake,设置源代码目录和工程文件夹目录
点击“Configure”!如果出现以下错误,则将EIGEN3_INCLUDE_DIR
设置为F:/Eigen3.3.4/include/eigen3
CMake Error at F:/cmake-3.20.6/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
(Required is at least version “3.1.0”)
Call Stack (most recent call first):
F:/cmake-3.20.6/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
cmake_modules/FindEigen3.cmake:82 (find_package_handle_standard_args)
CMakeLists.txt:70 (FIND_PACKAGE)
再次点击“Configure”,应该就配置完成!
再点击“Generate”、点击“Open Project”!
首先,确保VS当前是“Debug
”和“×64
”模式!打开g2o
项目的属性页,确保属性页也是“Debug
”和“×64
”模式!在C/C++
→命令行
的其他选项
中删掉-W
,在C/C++
→预处理器
的预处理器定义
中添加WINDOWS
!
再将属性页
的模式(不是VS的模式!)切换成“Release
”和“×64
”模式,作类似的设置!
再打开"D:\g2o\g2o\core\matrix_operations.h"
文件,将第48行和第66行代码的atxpy
后加上<Eigen::MatrixXd>
打开D:\g2o\g2o\core\sparse_block_matrix_ccs.h
文件,将第125行代码的atxpy
后加上<Eigen::MatrixXd>
打开"D:\g2o\g2o\core\sparse_block_matrix.hpp"
文件,将第277行代码的axpy
后加上<Eigen::MatrixXd>
,将第279行代码的atxpy
后也加上<Eigen::MatrixXd>
。
打开"D:\g2o\g2o\core\sparse_block_matrix_diagonal.h"
文件,将第97行代码的axpy
后加上<Eigen::MatrixXd>
打开"D:\g2o\g2o\core\robust_kernel.h"
文件,把第77行的typedef std::tr1::shared_ptr<RobustKernel> RobustKernelPtr;
修改为typedef std::shared_ptr<RobustKernel> RobustKernelPtr;
打开D:\g2o\g2o\core\hyper_graph.h
文件,把第93行的typedef std::tr1::unordered_map<int, Vertex*> VertexIDMap;
修改为typedef std::unordered_map<int, Vertex*> VertexIDMap;
打开D:\g2o\g2o\core\sparse_block_matrix_ccs.h
文件,把第226行的typedef std::tr1::unordered_map<int, MatrixType*> SparseColumn;
修改为typedef std::unordered_map<int, MatrixType*> SparseColumn;
打开"D:\g2o\g2o\core\optimization_algorithm_factory.cpp"
文件,给文件开头加上#include <algorithm>
。
以上工作都完成后,在VS中,右键选择ALL_BUILD
项目,点击“生成”!
生成成功后,再打开g2o
项目的属性页,确保属性页也是“Debug
”和“×64
”模式!把常规
→目标文件扩展名
设置为.lib
,把配置类型
设置为静态库
。把C/C++
→代码生成
→运行库
,设置为“多线程调试”!
点击确定后,重新“生成”ALL_BUILD
项目!
再把VS切换成“Release
”和“×64
”模式,直接生成“ALL_BUILD
”项目!
生成成功后,类似于前面的操作,再把g2o
项目的“Release
”和“×64
属性做如下设置:
点击确定后,再生成一次“ALL_BUILD
”项目!
生成完毕后,g2o就编译完成!
编译ORB_SLAM2
首先,在F盘下新建ORB_SLAM2
文件夹,再在ORB_SLAM2
文件夹中新建bin
、include
、lib
三个文件夹,再在include
中新建Thirdparty
文件夹,再在Thirdparty
中新建g2o
和DBoW2
两个文件夹。在bin
和lib
文件夹下都新建Debug
和Release
两个文件夹。
把以下文件夹复制到F:\ORB_SLAM2\include\Thirdparty\DBoW2
目录中:
D:\DBoW2下的DBoW2文件夹
D:\DBoW2下的DUtils文件夹
把以下文件夹复制到F:\ORB_SLAM2\include\Thirdparty\g2o
目录中:
D:\g2o下的g2o文件夹
再把D:\ORB_SLAM2-master\include
下的所有文件复制到F:\ORB_SLAM2\include
目录下
把"D:\g2o\config.h.in"
文件复制到F:\ORB_SLAM2\include\Thirdparty\g2o
目录下,并重命名为config.h
,把其中第4、5行注释掉。
把以下文件复制到F:\ORB_SLAM2\bin\Debug
目录下:
“D:\g2o-Build\Debug\g2o.dll”
“D:\g2o-Build\Debug\g2o.ilk”
“D:\g2o-Build\Debug\g2o.pdb”
“D:\DBoW2\lib\Debug\DBoW2.dll”
“D:\DBoW2\lib\Debug\DBoW2.ilk”
“D:\DBoW2\lib\Debug\DBoW2.pdb”
把以下文件复制到F:\ORB_SLAM2\bin\Release
目录下:
“D:\g2o-Build\Release\g2o.dll”
“D:\DBoW2\lib\Release\DBoW2.dll”
把以下文件复制到F:\ORB_SLAM2\lib\Debug
目录下:
“D:\g2o-Build\Debug\g2o.lib”
“D:\g2o-Build\Debug\g2o.ilk”
“D:\g2o-Build\Debug\g2o.pdb”
“D:\DBoW2\lib\Debug\DBoW2.lib”
“D:\DBoW2\lib\Debug\DBoW2.ilk”
“D:\DBoW2\lib\Debug\DBoW2.pdb”
把以下文件复制到F:\ORB_SLAM2\lib\Release
目录下:
“D:\g2o-Build\Release\g2o.lib”
“D:\DBoW2\lib\Release\DBoW2.lib”
以管理员权限打开Visual Studio,新建→项目→空项目,名称定为“ORB_SLAM2”,放在D盘下。
再在D:\ORB_SLAM2\ORB_SLAM2
目录下新建src
文件夹,把D:\ORB_SLAM2-master\src
下的所有文件复制到D:\ORB_SLAM2\ORB_SLAM2\src
目录下。
在VS的解决方案管理器
中,右键源文件
,添加→现有项,把D:\ORB_SLAM2\ORB_SLAM2\src
下的所有文件添加进来。
把VS当前模式设置为是“Debug
”和“×64
”模式。在属性管理器
界面,右键“Debug|×64”,选择“添加新项目属性表”,命名为ORB_SLAM2_Debug.props
。添加后,双击这个属性表。
将VC++目录
→包含目录
添加:
F:\Eigen3.3.4\include\eigen3
F:\OpenCV3.4.2\include
F:\ORB_SLAM2\include
F:\Pangolin\include
F:\OpenGL\include
将VC++目录
→库目录
添加:
F:\OpenCV3.4.2\x64\vc15\lib
F:\OpenGL\lib
F:\ORB_SLAM2\lib\Debug
F:\Pangolin\lib\Debug
将C/C++
→预处理器
→预处理器定义
添加:
_WIN_
WIN32
WINDOWS
_WINDOWS
HAVE_EIGEN
HAVE_GLEW
PANGO_DEFAULT_WIN_URI=“winapi”
_ENFORCE_MATCHING_ALLOCATORS=0
_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
CMAKE_INTDIR=“Debug”
g2o_EXPORTS
将链接器
→输入
→附加依赖项
添加:
freeglutd.lib
glew32d.lib
opencv_world342d.lib
opencv_img_hash342d.lib
DBoW2.lib
g2o.lib
pango_core.lib
pango_display.lib
pango_geometry.lib
pango_image.lib
pango_glgeometry.lib
pango_packetstream.lib
pango_opengl.lib
pango_plot.lib
pango_python.lib
pango_scene.lib
pango_tools.lib
pango_vars.lib
pango_video.lib
pango_windowing.lib
tinyobj.lib
opengl32.lib
将C/C++
→命令行
添加/bigobj
除了以上这些之外,还要对属性表进行如下修改:
以上这些全部设置完毕后,确保以下两处的属性页与上面的配置相同!!
解决方案资源管理器
中右键ORB_SLAM2
项目→属性
打开的属性页属性管理器
中双击“Debug|×64”打开的属性页
确认无误后,右键选择ORB_SLAM2
项目,点击“生成”!
生成完毕后,再打开ORB_SLAM2
项目的属性,做如下设置,即生成.lib库。
再次右键选择ORB_SLAM2
项目,点击“生成”!
至此,完成了ORB_SLAM2
的Debug库
编译!