eProsima Fast DDS & Fast DDS Spy & Shapes Demo Windows x64 从源码编译安装完全教程

文章目录

    • [1. 概述](#1. 概述)
      • [什么是 eProsima Fast DDS?](#什么是 eProsima Fast DDS?)
      • [什么是 Fast DDS Spy?](#什么是 Fast DDS Spy?)
      • [什么是 Shapes Demo?](#什么是 Shapes Demo?)
    • [2. 相关资源](#2. 相关资源)
    • [3. 安装前置依赖](#3. 安装前置依赖)
      • [3.1 系统要求](#3.1 系统要求)
      • [3.2 安装 Chocolatey(如未安装)](#3.2 安装 Chocolatey(如未安装))
      • [3.3 安装 Visual Studio 2022](#3.3 安装 Visual Studio 2022)
    • [4. 使用 vcpkg 编译 Fast DDS](#4. 使用 vcpkg 编译 Fast DDS)
      • [4.1 克隆 vcpkg](#4.1 克隆 vcpkg)
      • [4.2 安装 Fast DDS 及其依赖](#4.2 安装 Fast DDS 及其依赖)
      • [4.3 关键路径](#4.3 关键路径)
    • [5. 编译 Fast DDS Spy](#5. 编译 Fast DDS Spy)
      • [5.1 克隆依赖项目](#5.1 克隆依赖项目)
      • [5.2 编译顺序(按依赖关系)](#5.2 编译顺序(按依赖关系))
        • [步骤 1: 编译 cmake_utils 和 cpp_utils](#步骤 1: 编译 cmake_utils 和 cpp_utils)
        • [步骤 2: 编译 DDS-Pipe](#步骤 2: 编译 DDS-Pipe)
        • [步骤 3: 编译 Fast-DDS-Spy](#步骤 3: 编译 Fast-DDS-Spy)
      • [5.3 Fast DDS Spy 的使用](#5.3 Fast DDS Spy 的使用)
        • [YAML 配置示例(FASTDDSSPY_CONFIGURATION.yaml):](#YAML 配置示例(FASTDDSSPY_CONFIGURATION.yaml):)
    • [6. 编译 Shapes Demo](#6. 编译 Shapes Demo)
      • [6.1 克隆 Shapes Demo](#6.1 克隆 Shapes Demo)
      • [6.2 安装 Qt6](#6.2 安装 Qt6)
        • [方法 A: 从源码编译 Qt6 qtbase](#方法 A: 从源码编译 Qt6 qtbase)
        • [方法 B: 使用 Qt Online Installer(图形界面)](#方法 B: 使用 Qt Online Installer(图形界面))
      • [6.3 编译 Shapes Demo](#6.3 编译 Shapes Demo)
      • [6.4 运行 Shapes Demo](#6.4 运行 Shapes Demo)
    • [7. 创建独立运行目录](#7. 创建独立运行目录)
      • [7.1 DLL 依赖清单](#7.1 DLL 依赖清单)
        • [Shapes Demo 的依赖 DLL](#Shapes Demo 的依赖 DLL)
        • [Fast DDS Spy 的额外依赖 DLL](#Fast DDS Spy 的额外依赖 DLL)
      • [7.2 为什么需要这些 DLL?](#7.2 为什么需要这些 DLL?)
      • [7.3 一键收集脚本](#7.3 一键收集脚本)
    • [8. 使用指南](#8. 使用指南)
      • [8.1 运行 Fast DDS Spy](#8.1 运行 Fast DDS Spy)
      • [8.2 运行 Shapes Demo](#8.2 运行 Shapes Demo)
      • [8.3 验证安装](#8.3 验证安装)
    • [9. 常见问题](#9. 常见问题)
      • [Q1: 运行时报 "no Qt platform plugin" 错误](#Q1: 运行时报 "no Qt platform plugin" 错误)
      • [Q2: 运行时提示缺少 MSVCP140.dll 或 VCRUNTIME140.dll](#Q2: 运行时提示缺少 MSVCP140.dll 或 VCRUNTIME140.dll)
      • [Q3: GitHub clone 失败](#Q3: GitHub clone 失败)
      • [Q4: vcpkg 下载依赖失败](#Q4: vcpkg 下载依赖失败)
      • [Q5: 编译 Qt6 时报错](#Q5: 编译 Qt6 时报错)
      • Q6: "fastddsspy.exe 无法启动,因为计算机中丢失 api-ms-win-crt-*.dll"
    • [附录: 本机构建目录结构](#附录: 本机构建目录结构)

1. 概述

什么是 eProsima Fast DDS?

Fast DDS(原名 Fast RTPS)是 eProsima 开发的一个高性能 DDS(Data Distribution Service,数据分发服务)实现。DDS 是 OMG(Object Management Group)制定的分布式实时中间件标准,广泛应用于机器人、自动驾驶、工业物联网、航空航天等领域。

  • RTPS 协议: 基于 Real-Time Publish-Subscribe (RTPS) 协议,提供高效的数据分发
  • 语言支持: C++ API
  • 应用场景: ROS 2 的默认中间件、自动驾驶、仿真系统、工业控制

什么是 Fast DDS Spy?

Fast DDS Spy 是一个 DDS 网络监控工具,可以:

  • 发现 DDS 网络中的 DomainParticipantsTopics
  • 实时监控 Topic 数据
  • 支持 YAML 配置 文件
  • 提供 CLI 交互模式

什么是 Shapes Demo?

Shapes Demo 是 eProsima Fast DDS 的官方演示程序,通过可视化的彩色几何图形(圆形、正方形、三角形)展示 DDS 的发布/订阅通信机制。


2. 相关资源

项目 官网 GitHub 仓库
Fast DDS eprosima.com github.com/eProsima/Fast-DDS
Fast DDS Spy fast-dds-spy.readthedocs.io github.com/eProsima/Fast-DDS-Spy
DDS Pipe dds-pipe.readthedocs.io github.com/eProsima/DDS-Pipe
Shapes Demo --- github.com/eProsima/ShapesDemo
Fast DDS Python --- github.com/eProsima/Fast-DDS-python

3. 安装前置依赖

3.1 系统要求

  • Windows 10/11 x64
  • Visual Studio 2022(Professional / Community)
  • CMake ≥ 3.20
  • Ninja(可选,用于加速编译)
  • Git
  • Chocolatey(可选,用于安装依赖)

3.2 安装 Chocolatey(如未安装)

以管理员身份运行 PowerShell:

复制代码
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

3.3 安装 Visual Studio 2022

确保安装时勾选 "使用 C++ 的桌面开发" 工作负载,包含 MSVC v143 构建工具和 Windows 10/11 SDK。

设置 VS2022 环境变量的批处理脚本(本教程的工作目录假设为 C:\Users\dicing\Desktop\test\fastdds):

复制代码
@echo off
:: vs2022_env.bat
call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" x64
set PATH=C:\path\to\cmake\bin;C:\path\to\ninja;%%PATH%%
cd /d C:\path\to\workdir
%%*

4. 使用 vcpkg 编译 Fast DDS

4.1 克隆 vcpkg

复制代码
cd C:\fastdds
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat

4.2 安装 Fast DDS 及其依赖

由于国内 GitHub 访问不稳定,建议使用镜像或设置代理:

复制代码
# 设置代理(可选)
 = "http://your-proxy:port"
 = "http://your-proxy:port"

# 安装 Fast DDS(这会自动安装 fastcdr, foonathan_memory, tinyxml2, openssl 等依赖)
cd C:\fastdds\vcpkg
.\vcpkg install fastdds:x64-windows

# 安装 fasrtcdr(如未自动安装)
.\vcpkg install fastcdr:x64-windows

注意: vcpkg 会自动处理所有依赖。如果网络不好,可以多次重试 --recurse。

编译完成后,头文件在 cpkg\installed\x64-windows\include,库和 DLL 在 cpkg\installed\x64-windows\bin。

4.3 关键路径

项目 路径
vcpkg 安装目录 cpkg\installed\x64-windows
Fast DDS 头文件 cpkg\installed\x64-windows\include
DLL 目录 cpkg\installed\x64-windows\bin
CMake config cpkg\installed\x64-windows\share\fastdds\fastdds-config.cmake

5. 编译 Fast DDS Spy

5.1 克隆依赖项目

由于国内网络问题,如果 GitHub clone 失败,可以多次重试:

复制代码
set CFLAGS=
set CXXFLAGS=

cd C:\fastdds

:: 克隆 dev-utils(包含 cmake_utils 和 cpp_utils)
git clone --depth 1 https://github.com/eProsima/dev-utils.git

:: 克隆 DDS-Pipe(ddspipe 相关库)
git clone --depth 1 https://github.com/eProsima/DDS-Pipe.git -b 1.x

:: 克隆 Fast-DDS-Spy
git clone --depth 1 https://github.com/eProsima/Fast-DDS-Spy.git -b 1.x

5.2 编译顺序(按依赖关系)

Fast DDS Spy 的依赖链为:

复制代码
cmake_utils → cpp_utils → ddspipe_core / ddspipe_participants / ddspipe_yaml → fastddsspy_participants / fastddsspy_yaml → fastddsspy
步骤 1: 编译 cmake_utils 和 cpp_utils
复制代码
:: 设置 VS2022 环境
call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" x64

:: 设置路径
set PATH=C:\path\to\cmake\bin;C:\path\to\ninja;%PATH%
set CMAKE_PREFIX_PATH=C:\fastdds\vcpkg\installed\x64-windows

:: 编译 dev-utils
cmake -G Ninja -S dev-utils -B build\dev-utils ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX=install ^
    -DCMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%
cmake --build build\dev-utils --parallel
cmake --install build\dev-utils
步骤 2: 编译 DDS-Pipe
复制代码
cmake -G Ninja -S DDS-Pipe -B build\ddspipe ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX=install ^
    -DCMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%
cmake --build build\ddspipe --parallel
cmake --install build\ddspipe
步骤 3: 编译 Fast-DDS-Spy
复制代码
cmake -G Ninja -S Fast-DDS-Spy -B build\fastddsspy ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX=install ^
    -DCMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%
cmake --build build\fastddsspy --parallel
cmake --install build\fastddsspy

编译完成后, astddsspy.exe 位于 install\bin\ 目录下。

5.3 Fast DDS Spy 的使用

复制代码
# 查看帮助
fastddsspy.exe --help

# 查看版本
fastddsspy.exe --version

# 监控域 0(默认)
fastddsspy.exe

# 监控指定域
fastddsspy.exe --domain 1

# 使用配置文件
fastddsspy.exe -c my_config.yaml
YAML 配置示例(FASTDDSSPY_CONFIGURATION.yaml):
yaml 复制代码
spy:
  domain: 0
  discovery-time: 5
  output-file: spy_output.txt

6. 编译 Shapes Demo

6.1 克隆 Shapes Demo

复制代码
cd C:\fastdds
git clone https://github.com/eProsima/ShapesDemo.git

6.2 安装 Qt6

Shapes Demo 需要 Qt 6.8.3 (Core、Gui、Widgets 模块)。推荐从 清华镜像 下载源码编译:

方法 A: 从源码编译 Qt6 qtbase

由于 Qt 官方不再提供 Windows 预编译包的直接下载,需要从源码编译:

复制代码
:: 下载 Qt 6.8.3 源码(清华镜像,速度快)
curl -L -o qtbase-6.8.3.zip ^
    https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtbase-everywhere-src-6.8.3.zip

:: 解压
tar -xf qtbase-6.8.3.zip -C qt6

编译 Qt6(最小化配置,仅 Core/Gui/Widgets,耗时约 7 分钟):

复制代码
cmake -G Ninja -S qt6\qtbase-everywhere-src-6.8.3 -B qt6\build ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX=install ^
    -DFEATURE_dbus=OFF ^
    -DFEATURE_sql=OFF ^
    -DFEATURE_testlib=OFF ^
    -DFEATURE_concurrent=OFF ^
    -DBUILD_SHARED_LIBS=ON
cmake --build qt6\build --parallel
cmake --install qt6\build --prefix install
方法 B: 使用 Qt Online Installer(图形界面)

download.qt.io 下载安装器,选择 Qt 6.8.3 → MSVC 2022 64-bit 组件安装。

6.3 编译 Shapes Demo

复制代码
set CMAKE_PREFIX_PATH=C:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows

cmake -G Ninja -S ShapesDemo -B build\shapes_demo ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%
cmake --build build\shapes_demo --parallel

6.4 运行 Shapes Demo

编译完成后,ShapesDemo.exe 位于 uild\shapes_demo\ 目录。

要运行 Shapes Demo,需要确保 DLL 依赖在同一目录(详见下一节)。


7. 创建独立运行目录

为了使程序脱离开发环境独立运行,需要将所有依赖的 DLL 收集到同一目录。

7.1 DLL 依赖清单

Shapes Demo 的依赖 DLL
DLL 来源路径
astdds-3.6.dll cpkg\installed\x64-windows\bin
astcdr-2.3.dll cpkg\installed\x64-windows\bin
oonathan_memory-0.7.4.dll cpkg\installed\x64-windows\bin
inyxml2.dll cpkg\installed\x64-windows\bin
libssl-3-x64.dll cpkg\installed\x64-windows\bin
libcrypto-3-x64.dll cpkg\installed\x64-windows\bin
Qt6Core.dll install\bin
Qt6Gui.dll install\bin
Qt6Widgets.dll install\bin
Qt6Network.dll install\bin
Qt6OpenGL.dll install\bin
Qt6Xml.dll install\bin
platforms/qwindows.dll qt6\build\plugins\platforms
styles/qmodernwindowsstyle.dll qt6\build\plugins\styles
imageformats/qjpeg.dll qt6\build\plugins\imageformats
(其他系统 DLL 如 MSVCP140.dll、VCRUNTIME140.dll 需安装 VC++ Redistributable)
Fast DDS Spy 的额外依赖 DLL

除上述 Fast DDS 相关的 DLL 外,还需要:

DLL 来源路径
cpp_utils-1.5.dll install\bin
ddspipe_core-1.5.dll install\bin
ddspipe_participants-1.5.dll install\bin
ddspipe_yaml-1.5.dll install\bin
astddsspy_participants-1.5.dll install\bin
astddsspy_yaml-1.5.dll install\bin
yaml-cpp.dll install\bin
Qt6PrintSupport.dll install\bin

7.2 为什么需要这些 DLL?

Fast DDS 和 Fast DDS Spy 是动态链接的程序,运行时需要加载所有依赖的 DLL。运行目录结构如下:

复制代码
ShapesDemo/
├── ShapesDemo.exe
├── fastdds-3.6.dll
├── fastcdr-2.3.dll
├── foonathan_memory-0.7.4.dll
├── tinyxml2.dll
├── libssl-3-x64.dll
├── libcrypto-3-x64.dll
├── Qt6Core.dll
├── Qt6Gui.dll
├── Qt6Widgets.dll
├── Qt6OpenGL.dll
├── Qt6Xml.dll
├── platforms/
│   └── qwindows.dll
├── styles/
│   └── qmodernwindowsstyle.dll
└── imageformats/
    ├── qjpeg.dll
    ├── qgif.dll
    └── qico.dll

⚠️ 注意: Qt 的 platform 插件必须放在 platforms/ 子目录中,否则程序会报 "no Qt platform plugin" 错误。

7.3 一键收集脚本

复制代码
 = "C:\fastdds\dist\ShapesDemo"
 = "C:\fastdds\vcpkg\installed\x64-windows\bin"
 = "C:\fastdds\install\bin"
 = "C:\fastdds\qt6\build\plugins"

# 创建目录结构
New-Item -ItemType Directory -Force -Path , "\platforms", "\styles", "\imageformats"

# 复制 exe 和 DLL
Copy-Item "build\shapes_demo\ShapesDemo.exe" 
Copy-Item "\fastdds-3.6.dll", "\fastcdr-2.3.dll", "\foonathan_memory-0.7.4.dll" 
Copy-Item "\tinyxml2.dll", "\libssl-3-x64.dll", "\libcrypto-3-x64.dll" 
Copy-Item "\Qt6*.dll" 
Copy-Item "\platforms\qwindows.dll" "\platforms\"
Copy-Item "\styles\qmodernwindowsstyle.dll" "\styles\"
Copy-Item "\imageformats\*.dll" "\imageformats\"

8. 使用指南

8.1 运行 Fast DDS Spy

Fast DDS Spy 是一个命令行工具,用于监控 DDS 网络流量:

复制代码
# 基本用法 - 启动交互式 CLI 监控域 0
fastddsspy.exe

# 监控指定域
fastddsspy.exe --domain 1

# 使用自定义配置
fastddsspy.exe -c my_config.yaml

# 设置日志级别
fastddsspy.exe --log-verbosity info

在交互式 CLI 中,可以实时查看:

  • 发现的 DomainParticipants
  • 发布/订阅的 Topics
  • Topic 数据内容

8.2 运行 Shapes Demo

Shapes Demo 是一个图形化演示程序:

复制代码
ShapesDemo.exe

启动后你会看到主窗口,可以:

  1. 发布形状(Publisher):

    • 点击 Publish 按钮
    • 选择形状类型(Circle / Square / Triangle)
    • 选择颜色
    • 设置大小和移动方向
    • 点击 OK 开始发布
  2. 订阅形状(Subscriber):

    • 点击 Subscribe 按钮
    • 选择要订阅的形状/颜色
    • 点击 OK 开始接收
  3. 演示效果:

    • 多个 Shapes Demo 实例可以在同一网络/域中通信
    • 发布者发送的彩色形状会显示在订阅者的画布上
    • 支持过滤(Content Filter),只订阅特定颜色或形状

8.3 验证安装

用 Fast DDS Spy 监控 Shapes Demo:

  1. 启动 Shapes Demo
  2. 启动 Fast DDS Spy:
    ash fastddsspy.exe --domain 0
  3. Spy 会自动发现 Shapes Demo 创建的 Participant 和 Topics
  4. 在 Shapes Demo 中发布一个形状
  5. Spy 会显示 Topic 数据和通信内容

9. 常见问题

Q1: 运行时报 "no Qt platform plugin" 错误

原因 : Qt 找不到平台插件 qwindows.dll。

解决: 确保运行目录下有 platforms\qwindows.dll 子目录和文件。

Q2: 运行时提示缺少 MSVCP140.dll 或 VCRUNTIME140.dll

原因 : 缺少 Visual C++ Redistributable。

解决 : 安装 VC++ Redistributable

Q3: GitHub clone 失败

原因 : 国内网络访问 GitHub 不稳定。

解决:

  • 多次重试 clone
  • 使用代理(git config --global http.proxy)
  • 使用 Gitee 镜像

Q4: vcpkg 下载依赖失败

解决 :

powershell .\vcpkg install fastdds:x64-windows --recurse

Q5: 编译 Qt6 时报错

原因 : Qt6 需要完整的 MSVC 环境。

解决: 确保在 VS2022 的 x64 命令提示符中运行 cmake。

Q6: "fastddsspy.exe 无法启动,因为计算机中丢失 api-ms-win-crt-*.dll"

原因 : 系统缺少 Universal C Runtime。

解决: 安装 Windows Update KB2999226 或安装 VC++ Redistributable。


附录: 本机构建目录结构

复制代码
C:\fastdds\
├── vcpkg\                           # vcpkg 包管理器
│   └── installed\x64-windows\       # Fast DDS 和依赖安装目录
│       ├── bin\                     # DLL 文件
│       ├── include\                 # 头文件
│       ├── lib\                     # LIB 导入库
│       └── share\                   # CMake config 文件
├── dev-utils\                       # cmake_utils, cpp_utils 源码
├── DDS-Pipe\                        # ddspipe 源码
├── Fast-DDS-Spy\                    # Fast DDS Spy 源码
├── ShapesDemo\                      # Shapes Demo 源码
├── qt6\                             # Qt6 源码和构建目录
│   ├── qtbase-everywhere-src-6.8.3\ # Qt6 源码
│   ├── build\                       # Qt6 构建输出
│   └── plugins\                     # Qt6 插件
├── build\                           # 所有项目的构建输出
│   ├── dev-utils\
│   ├── ddspipe\
│   ├── fastddsspy\
│   └── shapes_demo\
├── install\                         # 统一安装前缀
│   ├── bin\                         # 所有 exe 和 DLL
│   ├── include\                     # 头文件
│   └── lib\                         # 库文件
├── dist\                            # 独立运行目录
│   ├── ShapesDemo\                  # Shapes Demo 独立运行包
│   └── fastddsspy\                  # Fast DDS Spy 独立运行包
└── downloads\                       # 下载的源码包

相关推荐
ITHAOGE152 小时前
下载| Windows 11 ARM版5月官方ISO系统映像 (适合部分笔记本、苹果M系列芯片电脑、树莓派和部分安卓手机平板)
windows·科技·微软·电脑
感谢地心引力3 小时前
在codex里面使用Deepseek-v4,支持mac和windows双系统
windows·gpt·macos·ai·codex·deepseek
不总是12 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
不总是14 小时前
[2026最新] Windows 免安装版 MySQL 8 详细安装配置教程(ZIP 压缩包版)
数据库·windows·mysql
2401_8769641315 小时前
27考研余炳森概率论|喻老李良2027资料网课
windows·git·考研·svn·eclipse·github·概率论
介一安全16 小时前
【漏洞学习】PHP+Windows环境通用文件上传漏洞深度剖析
windows·web安全·php·文件上传·安全性测试
思麟呀16 小时前
C++工业级日志项目(六)异步日志器
linux·c++·windows
fastjson_16 小时前
Win11 关闭拖动窗口自动出现的贴靠窗口分栏
windows
早睡身体真不戳17 小时前
【无标题】
java·服务器·windows