easter egg:boost、glew、 opencv、cmke夸克下载
链接:https://pan.quark.cn/s/c3b13d4ef01f?pwd=cE4z
提取码:cE4z

orbslam3源码(适配版):orb_slam3_Windows: 在Windows部署orb_slam3

一、编译 Boost 库(适用于 Visual Studio 2022)

1.1 下载 Boost 源码

前往官方镜像地址下载 Boost 1.83.0 版本源码包:

🔗 下载链接Boost 1.88.0https://www.boost.org/releases/1.88.0/

将压缩包解压到Thirdparty目录下(如"A:\ORB-SLAM3\orbslam3\Thirdparty\boost_1_88_0")


1.2 生成构建工具 b2.exe

进入Boost目录,运行 Bootstrap 脚本,以生成 Boost 构建系统所需的核心工具 b2.exe


执行成功后,你会在当前目录看到 b2.exe生成


1.3 编译 Boost 静态库

在当前目录打开终端,运行以下命令开始编译 64位、静态链接、发布版本 的 Boost 库:

.\b2.exe stage toolset=msvc-14.3 address-model=64 link=static runtime-link=static -j4 release

🔍 参数说明:

参数含义
stage将编译好的库输出到 stage\lib 目录
toolset=msvc-14.3使用 Visual Studio 2022 编译器(对应 MSVC v143)
address-model=64编译 64 位版本
link=static生成静态库(.lib
runtime-link=static静态链接 C++ 运行时,减少外部 DLL 依赖
-j4使用 4 个线程并行编译(可按 CPU 核心数调整,如 -j8
release编译优化后的发布版本

注意:我使用的是 msvc-14.3(VS2022),若你使用的是 VS2019,请务必改为 msvc-14.2

编译完成后你将在boost目录下看到stage文件夹


二、安装与配置OpenCV库

2.1 下载OpenCV库

OpenCV官网下载Windows平台下的exe文件(也可以从我的云盘中下),然后安装即可

Releases - OpenCVhttps://opencv.org/releases/

2.2 配置OpenCV环境变量

1、记住OpenCV的安装路径

2、打开电脑设置->系统->系统信息->高级系统设置->环境变量

进入环境变量页面后,双击系统变量下的Path,进入配置页面

在配置页面点击新建,把opencv目录下的opencv\build\x64\vc14\bin地址复制到path中

重启以后环境变量即生效

2.3 在VS当中部署OpenCV

三、编译 glew 库(后续编译Pangolin用到)

3.1 下载 GLEW 源码

访问官网:https://glew.sourceforge.net/
下载 GLEW 2.1.0 的源码包(例如 glew-2.1.0.zip)
解压到本地目录(我为了方便放在了Thirdparty目录下)例如:"A:\ORB-SLAM3\orbslam3\Thirdparty\glew-2.1.0"


3.2 打开 Visual Studio 工程

进入目录:glew-2.1.0\build\vc12


用 Visual Studio 2013 或更高版本(兼容 vc12 工具集)打开 glew.sln
💡 如果你使用的是 VS2019/VS2022,可能会提示升级项目平台工具集,可以接受升级。

3.3 配置编译目标

你需要分别编译 Debug 和 Release 两种配置下的两个项目:

glew_static → 生成 静态库(.lib) ——Pangolin 通常链接这个
glew_shared → 生成 动态库(.dll + .lib)
编译步骤:
在 Visual Studio 中,选择 Configuration(配置): Release,Platform(平台): x64
右键 glew_static → Build(生成)
右键 glew_shared → Build(生成)

📁 输出位置:

静态库(glew32s.lib)默认生成在 glew-2.1.0\lib\Release\x64
动态库(glew32.dll 和 glew32.lib)生成在 glew-2.1.0\bin\Release\x64


3.4. (可选)将 DLL 加入系统路径


如果你运行依赖 GLEW 动态库的程序时提示“找不到 glew32.dll”,可以:

将 glew32.dll 复制到你的可执行文件目录(推荐)
或复制到 C:\Windows\System32(仅限 64 位 DLL;32 位应放 SysWOW64)
⚠️ 不建议随意往 System32 放 DLL,容易污染系统。优先放在程序同目录。

四、编译 Pangolin 库

4.1 准备工作

1) 确认依赖已就绪

  • 已安装 Visual Studio 2022(含 C++ 桌面开发组件)

  • 已成功编译 GLEW 2.1.0 静态库(Release, x64)

    • 头文件路径:A:\ORB-SLAM3\orbslam3\Thirdparty\glew-2.1.0\include

    • 静态库路径:A:\ORB-SLAM3\orbslam3\Thirdparty\glew-2.1.0\lib\Release\x64\glew32s.lib

⚠️ 必须是 glew32s.lib(带 s),不是 glew32.lib


2)新建 build 文件夹

进入 Pangolin 源码目录:A:\ORB-SLAM3\orbslam3\Thirdparty\Pangolin

在该目录下新建文件夹 build

✅ 目的:采用 out-of-source 构建,避免污染源码。


4.2 CMake-GUI 配置

1) 设置源码与构建路径

  • Where is the source code:
    A:/ORB-SLAM3/orbslam3/Thirdparty/Pangolin

  • Where to build the binaries:
    A:/ORB-SLAM3/orbslam3/Thirdparty/Pangolin/build

💡 路径建议使用正斜杠 / 或双反斜杠 \\

2) 首次 Configure

  • 点击 Configure
  • 选择:GeneratorVisual Studio 17 2022(根据自己VS版本选择)  Platformx64
  • 点击 Finish

3) 取消不必要的外部依赖项

取消勾选以下选项(关键!):

选项说明
BUILD_EXAMPLES不需要示例程序
BUILD_EXTERN_GLEW使用系统或已安装的
BUILD_EXTERN_LIBJPEG使用系统或已安装的 JPEG 库
BUILD_EXTERN_LIBPNG同上

✅ 目的:强制 Pangolin 使用你提供的 GLEW,而非自动下载旧版。

4) 手动指定 GLEW 路径

再次点击 Configure,会出现红色错误(找不到 GLEW)。


手动填写以下两个变量:把安装的GLEW的include目录选上,在第二个选项里把GLEW的x64的静态lib文件glew32s.lib选上

CMake 变量值(根据你的实际路径修改)
GLEW_INCLUDE_DIRA:\ORB-SLAM3\orbslam3\Thirdparty\glew-2.1.0\include
GLEW_LIBRARYA:\ORB-SLAM3\orbslam3\Thirdparty\glew-2.1.0\lib\Release\x64\glew32s.lib

🔑 关键检查:

  • 路径正确
  • 文件名是 glew32s.lib(静态库)
  • 使用 Release 版本(与后续编译配置一致)

5) 完成生成

  • 再次点击 Configure → 应显示 Configuring done
  • 点击 Generate → 显示 Generating done
  • 关闭 CMake-GUI


4.3  在Visual Studio 编译Pangolin

1) 打开解决方案

  • 进入 Pangolin\build 目录
  • 双击打开 Pangolin.sln

2 )设置全局编译配置

  • 打开 Pangolin.sln 后,在 Visual Studio 顶部工具栏
    • Solution Configurations(解决方案配置) → 选择 Release
    • Solution Platforms(解决方案平台) → 选择 x64

Solution Explorer(解决方案资源管理器) 中:

  • 右键 Pangolin(不是 ALL_BUILD 或 INSTALL)
  • 选择 Properties(属性)

⚠️ 重要:确保左上角的 Configuration = ReleasePlatform = x64
(VS 会为不同配置保存独立属性,改错配置无效!)

1、配置项 1:配置属性
  • 配置属性 → 常规(General) →  配置类型(Configuration Type) 选择 静态库 (.lib)

  • 配置属性 → 高级(Advanced) → 目标文件扩展名(Target Extension) 填 (.lib)


2、配置项 2:运行时库(关键!)
  • C/C++ → 代码生成 → 运行库 选择 多线程 (/MT)

🔍 为什么必须是 /MT?

  • /MT = 静态链接 C 运行时库(CRT)
  • /MD = 动态链接 CRT(需 vcruntimeXXX.dll

✅ 必须与 ORB-SLAM3、Boost、OpenCV 统一为 /MT(静态 CRT)


3、配置项 3:添加 GLEW_STATIC 宏(极易遗漏!)
  • C/C++ → 预处理器(Preprocessor) → 预处理器定义(Preprocessor Definitions)
    → 在末尾添加:
    GLEW_STATIC

🔍 为什么?
当你使用 GLEW 静态库(glew32s.lib 时,必须定义此宏。否则 GLEW 头文件会默认按动态库方式导出符号,导致链接错误:

error LNK2019: unresolved external symbol __imp_glewInit

3)编译项目

  • 点击 应用→确认 保存属性
  • 回到 Solution Explorer(解决方案管理器):右键 ALL_BUILD → 点击Build(生成)

  • 等待编译完成(输出 窗口显示 生成: 3 成功,1 失败,0 最新,0 已跳过

忽视一个报错,工程会报错,但是最后可以生成一个输出文件

A:\ORB-SLAM3\orbslam3\Thirdparty\Pangolin\lib\Release\pangolin.lib

✅ 此即 ORB-SLAM3 所需的静态库。

五、 编译DBoW2库

5.1 修改DBoW2库的 CMakeLists.txt 文件

1)进入 Thirdparty/DBoW2 目录,打开 CMakeLists.txt 文件

2)手动指定 OpenCV 的安装路径的build 目录

(我的opencv目录为:"C:/opencv341/opencv/build")


5.2 CMake-GUI 配置

1)新建 build 文件夹

进入 DBoW2 源码目录:A:\ORB-SLAM3\orbslam3\Thirdparty\DBoW2

在该目录下新建文件夹 build

2)生成的项目文件DBoW2.sln

  • 打开 CMake-GUI

  • 设置:

    • Where is the source codeA:/ORB-SLAM3/orbslam3/Thirdparty/DBoW2
    • Where to build the binariesA:/ORB-SLAM3/orbslam3/Thirdparty/DBoW2/build

  • 点击 Configure

    • Generator: Visual Studio 17 2022
    • Platform: x64
    • 点击 Finish

3)点击 Generate → 生成 DBoW2.sln

✅ 此时在build目录,已经生成的项目文件DBoW2.sln。


 5.3  在Visual Studio 编译 DBoW2

1) 打开解决方案

  • 进入  DBoW2\build 目录
  • 双击打开  DBoW2.sln


2 )设置全局编译配置

  • 打开 DBoW2.sln后,在 Visual Studio 顶部工具栏
    • Solution Configurations(解决方案配置) → 选择 Release
    • Solution Platforms(解决方案平台) → 选择 x64

Solution Explorer(解决方案资源管理器) 中:

  • 右键 DBoW2(不是 ALL_BUILD )
  • 选择 Properties(属性)

⚠️ 重要:确保左上角的 Configuration = ReleasePlatform = x64
(VS 会为不同配置保存独立属性,改错配置无效!)

1、配置项 1:配置属性
  • 配置属性 → 常规(General) →  配置类型(Configuration Type) 选择 静态库 (.lib)


  • 配置属性 → 高级(Advanced) → 目标文件扩展名(Target Extension) 填 (.lib)


  • 配置属性 → VC++ 目录  → 包含目录添加opencv的include目录以及include下的opencv和opencv2目录。如:

C:\opencv341\opencv\build\include
C:\opencv341\opencv\build\include\opencv
C:\opencv341\opencv\build\include\opencv2


  • 配置属性 → VC++ 目录  → 库目录添加opencv的include\x64\vc15\lib。如:

C:\opencv341\opencv\build\x64\vc15\lib


2、配置项 2:运行时库(关键!)
  • C/C++ → 代码生成 → 运行库 选择 多线程 (/MT)

🔍 为什么必须是 /MT?

  • /MT = 静态链接 C 运行时库(CRT)
  • /MD = 动态链接 CRT(需 vcruntimeXXX.dll

✅ 必须与 ORB-SLAM3、Boost、OpenCV 统一为 /MT(静态 CRT)


3) 编译DBoW2

  • 右键 ALL_BUILD → Build(生成)

  •  等待编译完成(输出 窗口显示 生成: 3 成功,0 失败,0 最新,0 已跳过

  • 成功生成:DBoW2\build\Release\DBoW2.lib

✅ 此即 ORB-SLAM3 所需的静态库。

六、编译 g2o  库

6.1 CMake-GUI 配置

1)新建 build 文件夹

进入 DBoW2 源码目录:A:\ORB-SLAM3\orbslam3\Thirdparty\g2o

在该目录下新建文件夹 build

2)生成的项目文件g2o.sln

  • 打开 CMake-GUI

  • 设置:

    • Where is the source code:A:/ORB-SLAM3/orbslam3/Thirdparty/g2o
    • Where to build the binaries:A:/ORB-SLAM3/orbslam3/Thirdparty/g2o/build

  • 点击 Configure

    • Generator: Visual Studio 17 2022
    • Platform: x64
    • 点击 Finish

3)点击 Generate → 生成 g2o.sln

✅ 此时在build目录,已经生成的项目文件g2o.sln。


 6.2  在Visual Studio 编译 g2o

1) 打开解决方案

  • 进入  g2o\build 目录
  • 双击打开  g2o.sln


2 )设置全局编译配置

  • 打开 g2o.sln后,在 Visual Studio 顶部工具栏
    • Solution Configurations(解决方案配置) → 选择 Release
    • Solution Platforms(解决方案平台) → 选择 x64

Solution Explorer(解决方案资源管理器) 中:

  • 右键 g2o(不是 ALL_BUILD )
  • 选择 Properties(属性)

⚠️ 重要:确保左上角的 Configuration = ReleasePlatform = x64
(VS 会为不同配置保存独立属性,改错配置无效!)

1、配置项 1:配置属性
  • 配置属性 → 常规(General) →  配置类型(Configuration Type) 选择 静态库 (.lib)


  • 配置属性 → 高级(Advanced) → 目标文件扩展名(Target Extension) 填 (.lib)


2、配置项 2:运行时库(关键!)
  • C/C++ → 代码生成 → 运行库 选择 多线程 (/MT)

🔍 为什么必须是 /MT?

  • /MT = 静态链接 C 运行时库(CRT)
  • /MD = 动态链接 CRT(需 vcruntimeXXX.dll

✅ 必须与 ORB-SLAM3、Boost、OpenCV 统一为 /MT(静态 CRT)

3、配置项 3: 添加预处理器定义
  • C/C++ → 预处理器 → 预处理器定义 → 添加 WINDOWS


3) 编译g2o

  • 右键 ALL_BUILD → Build(生成)

  •  等待编译完成(输出 窗口显示 生成: 3 成功,0 失败,0 最新,0 已跳过

  • 成功生成:\Thirdparty\g2o\build\Release\g2o.lib

✅ 此即 ORB-SLAM3 所需的静态库。

七、ORB-SLAM3  编译

7.1 准备工作

确保以下组件已正确安装,并记录路径:

组件版本路径示例说明
OpenCV3.4.1C:/opencv341/opencv/build高版本可能不兼容
Boost1.88.0A:/ORB-SLAM3/orbslam3/Thirdparty/boost_1_88_0需用 VS2022(vc143)编译为静态库
Eigen3≥3.1.0.../Thirdparty/eigen3仅头文件,解压即可
Pangolin最新版.../Thirdparty/Pangolin需手动编译
DBoW2.../Thirdparty/DBoW2/lib/Release/DBoW2.lib需手动编译
g2o.../Thirdparty/g2o/build/Release/g2o.lib需手动编译

⚠️ 所有 .lib 文件必须存在!建议先完成 DBoW2、g2o、Pangolin 的编译。


7.2 修改 CMakeLists.txt

1) 设置 OpenCV 路径(关键!)

找到原 OpenCV 查找代码,替换为

# === 手动指定 OpenCV ===
set(OpenCV_DIR "C:/opencv341/opencv/build")
find_package(OpenCV 3.4.1 QUIET)
# ======================

2)更新 include 目录

include_directories(...) 中确保包含:

include_directories(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}/include
    ${PROJECT_SOURCE_DIR}/include/CameraModels
    ${EIGEN3_INCLUDE_DIR}
    ${Pangolin_INCLUDE_DIRS}
    ${PROJECT_SOURCE_DIR}/Thirdparty/boost_1_88_0
    ${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2
    ${PROJECT_SOURCE_DIR}/Thirdparty/g2o
)

3)更新链接库路径

target_link_libraries(...) 中使用你的实际路径:

target_link_libraries(${PROJECT_NAME}
    ${OpenCV_LIBS}
    ${EIGEN3_LIBS}
    ${Pangolin_LIBRARIES}
    ${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/Release/DBoW2.lib
    ${PROJECT_SOURCE_DIR}/Thirdparty/g2o/build/Release/g2o.lib
    ${PROJECT_SOURCE_DIR}/Thirdparty/boost_1_88_0/stage/lib/libboost_serialization-vc143-mt-s-x64-1_88.lib
)

4) 添加宏定义(可选但推荐)

add_definitions(-DCOMPILEDWITHC11) 下方加:

add_definitions(-DWINDOWS)


7.3 使用 CMake-GUI 生成 VS 工程

1)新建build文件夹

ORB_SLAM项目目录下面新建build文件夹

2)CMake-GUI配置

1. 打开 CMake-GUI

设置:

  • Where is the source code: A:/ORB-SLAM3/orbslam3
  • Where to build the binaries: A:/ORB-SLAM3/orbslam3/build

2. 点击 Configure

  • 选择 Visual Studio 17 2022
  • 平台选 x64

3. 点击 Finish

4. 等待配置完成(应看到 Configuring done)  成功后点 Generate


7.4 配置 Visual Studio 项目属性

1) 打开 ORB_SLAM3.sln

进入 build 文件夹,打开 ORB_SLAM3.sln

2)属性配置

1、在 VS 顶部工具栏设置:

  • Solution Configurations: Release
  • Solution Platforms: x64

2、在 解决方案资源管理器 中右键 ORB_SLAM3属性

配置如下:

类别设置项
常规配置类型静态库 (.lib)
高级目标文件扩展名.lib
C/C++ → 代码生成运行库多线程 (/MT)
C/C++ → 预处理器预处理器定义添加:
WINDOWS
COMPILEDWITHC11

💡 这些设置确保与 Boost、OpenCV 的 /MT 编译方式一致,避免链接冲突。


7.5 手动添加依赖路径(重要!)

虽然 CMake 已设置,但 Windows 下常需在 VS 中显式添加:

1) VC++ 目录 → 包含目录

添加:

  • opencv库
  1. C:\opencv341\opencv\build\include
  2. C:\opencv341\opencv\build\include\opencv
  3. C:\opencv341\opencv\build\include\opencv2
  • boost库
  1. A:\ORB-SLAM3\orbslam3\Thirdparty\boost_1_88_0

2)VC++ 目录 → 库目录

添加opencv和boost的库目录:

  • C:\opencv341\opencv\build\x64\vc15\lib
  • A:\ORB-SLAM3\orbslam3\Thirdparty\boost_1_88_0\stage\lib

3) C/C++ → 常规 → 附加包含目录

添加 DBoW2和g2o库的路径:

  • A:\ORB-SLAM3\orbslam3\Thirdparty\DBoW2
  • A:\ORB-SLAM3\orbslam3\Thirdparty\g2o

✅ 这一步可防止“找不到头文件”或“链接错误”。


7.6 生成 ORB_SLAM3.lib

  1. 确认所有配置无误
  2. 右键 ORB_SLAM3 项目 → 生成
  3. 成功后会在 build/Release/ 下生成 ORB_SLAM3.lib

八、编译示例程序(如stereo_inertial_euroc)

  • 同样需要在 VS 中配置stereo_inertial_euroc项目的属性(/MT、附加包含目录、附加依赖项等)
  • 添加 usleep 兼容代码(Windows 无 usleep)
  • 复制 glew.dll 到可执行文件目录
  • 解压 Vocabulary/ORBvoc.txt.tar.gz
  • 下载 EuRoC 数据集并运行

具体stereo_inertial_euroc运行过程请参考我下一篇文章

https://blog.csdn.net/wxr66/article/details/156239330?spm=1011.2415.3001.10575&sharefrom=mp_manage_linkhttps://blog.csdn.net/wxr66/article/details/156239330?spm=1011.2415.3001.10575&sharefrom=mp_manage_link


✅ 常见问题排查

问题解决方案
LNK2038: 检测到运行时库不匹配所有库和项目必须统一使用 /MT(非 /MD)
无法打开 DBoW2.lib检查路径是否存在,是否拼写错误
fatal error: boost/xxx.hpp not found检查 include_directories 是否包含 boost 根目录
CMake 找不到 Pangolin手动设置 Pangolin_DIR 指向其 build 目录

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐