news 2026/5/30 9:52:22

Fast DDS Monitor Windows x64 从源码编译安装完全教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fast DDS Monitor Windows x64 从源码编译安装完全教程

文章目录

    • 1. 概述
      • 核心功能
      • 与其他工具的关系
    • 2. 相关资源
    • 3. Fast DDS Monitor 是什么?
      • 架构原理
    • 4. 环境准备
      • 4.1 系统要求
      • 4.2 VS2022 环境脚本
    • 5. 编译 Fast DDS(基础依赖)
      • 5.1 安装 vcpkg 和 Fast DDS
      • 关键路径
    • 6. 编译 Qt6 全模块
      • 6.1 下载源码(清华镜像)
      • 6.2 编译顺序
        • 第 1 步:编译 qtbase
        • 第 2 步:编译 qtshadertools
        • 第 3 步:编译 qtdeclarative(含 Qml/Quick/QuickControls2)
        • 第 4 步:编译 qtcharts(必须在 qtdeclarative 之后!)
    • 7. 编译 Fast DDS Statistics Backend
      • 7.1 克隆源码
      • 7.2 编译安装
    • 8. 编译 Fast DDS Monitor
      • 8.1 获取源码
      • 8.2 编译
      • 8.3 运行
    • 9. 常见问题与修复
      • Q1: 程序崩溃,退出码 -1
      • Q2: 编译错误 "module Clipboard is not installed"
      • Q3: 编译错误 "module QtCharts is not installed"
      • Q4: "Cannot open: file:///resources/images/..." 错误
      • Q5: GitHub 克隆超时
    • 10. 创建独立运行包
      • 10.1 最终目录结构
    • 11. 使用指南
      • 11.1 启动与连接
      • 11.2 界面布局
      • 11.3 DDS 实体发现
      • 11.4 统计图表
    • 附录:编译耗时参考

1. 概述

Fast DDS Monitor是 eProsima 为 Fast DDS 开发的图形化监控工具,基于Qt6 Quick (QML)框架构建。
它可以实时发现、监控和分析 DDS 网络中的所有实体(DomainParticipants、Topics、Writers、Readers 等),
并以图表形式展示通信统计数据。

核心功能

  • 网络发现— 自动发现同一域中的 DomainParticipants、Topics、Endpoints
  • 实时统计— 以折线图、柱状图展示延迟、吞吐量、数据样本数等统计指标
  • 层次结构视图— 按物理架构(Host -> Process)和逻辑架构(Domain -> Topic)组织显示
  • 告警系统— 可配置阈值告警,监控数据异常
  • 数据导出— 支持 CSV 格式导出统计数据
  • 图形化界面— 基于 Qt Quick 的现代化 UI,多标签页管理

与其他工具的关系

工具类型用途
Fast DDS SpyCLI 工具命令行监控 DDS 网络流量
Fast DDS MonitorGUI 工具图形化 DDS 网络监控与分析
Shapes DemoGUI 演示展示 DDS 发布/订阅通信机制

附编译好的Fast DDS Monitor和Fast DDS Spy工具下载地址:https://download.csdn.net/download/qq8864/92923224,通过工具方便理解DDS原理。

2. 相关资源

项目仓库地址版本
Fast DDS Monitorhttps://github.com/eProsima/Fast-DDS-Monitorv4.1.0
Fast DDS Statistics Backendhttps://github.com/eProsima/Fast-DDS-statistics-backendv2.5.0
Fast DDShttps://github.com/eProsima/Fast-DDSv3.6.1
Qthttps://www.qt.io/6.8.3

3. Fast DDS Monitor 是什么?

架构原理

Fast DDS Monitor 基于Fast DDS Statistics Backend库,该库封装了 Fast DDS 的统计模块数据收集 API。
Monitor 通过 Backend 库订阅 DDS 统计 Topic,获取各实体的通信指标。

技术栈:

  • C++ 核心逻辑 — Fast DDS, Statistics Backend, Qt6 C++ API
  • QML 前端 — Qt Quick, Qt Quick Controls 2, Qt Charts
  • 通信协议 — RTPS (Real-Time Publish-Subscribe) 协议

4. 环境准备

4.1 系统要求

  • Windows 10/11 x64
  • Visual Studio 2022 含 C++ 桌面开发工作负载
  • Git
  • 足够磁盘空间(约 10-15 GB)

4.2 VS2022 环境脚本

创建 vs2022_env.bat:

@echo off 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:\fastdds %%*

5. 编译 Fast DDS(基础依赖)

5.1 安装 vcpkg 和 Fast DDS

cd C:\fastdds git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg install fastdds:x64-windows

这会自动安装:

  • fastcdr(序列化库)
  • foonathan_memory(内存管理)
  • tinyxml2(XML 解析)
  • OpenSSL(加密支持)

关键路径

组件路径
Fast DDS 头文件vcpkg\installed\x64-windows\include
Fast DDS DLLvcpkg\installed\x64-windows\bin
CMake 配置vcpkg\installed\x64-windows\share\fastdds

6. 编译 Qt6 全模块

Fast DDS Monitor 需要以下 Qt6 模块:

  • Qt6 Core, Gui, Widgets -> 来自 qtbase
  • Qt6 Qml, Quick, QuickControls2 -> 来自 qtdeclarative
  • Qt6 Charts -> 来自 qtcharts
  • Qt6 ShaderTools -> 来自 qtshadertools(Qt Quick 编译必需)

6.1 下载源码(清华镜像)

cd C:\fastdds\downloads # qtbase (Core/Gui/Widgets) 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 # qtdeclarative (Qml/Quick) - 约 80MB curl -L -o qtdeclarative-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtdeclarative-everywhere-src-6.8.3.zip # qtshadertools curl -L -o qtshadertools-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtshadertools-everywhere-src-6.8.3.zip # qtcharts curl -L -o qtcharts-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtcharts-everywhere-src-6.8.3.zip

6.2 编译顺序

第 1 步:编译 qtbase
cd C:\fastdds tar -xf downloads\qtbase-6.8.3.zip -C qt6 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 :: ~7 分钟 cmake --install qt6\build --prefix install
第 2 步:编译 qtshadertools
tar -xf downloads\qtshadertools-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtshadertools-everywhere-src-6.8.3 -B qt6\build_qtshadertools ^ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install cmake --build qt6\build_qtshadertools --parallel :: ~1 分钟 cmake --install qt6\build_qtshadertools --prefix install
第 3 步:编译 qtdeclarative(含 Qml/Quick/QuickControls2)
tar -xf downloads\qtdeclarative-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtdeclarative-everywhere-src-6.8.3 -B qt6\build_qtdeclarative ^ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install cmake --build qt6\build_qtdeclarative --parallel :: ~8 分钟 cmake --install qt6\build_qtdeclarative --prefix install
第 4 步:编译 qtcharts(必须在 qtdeclarative 之后!)

重要:qtcharts 必须在 qtdeclarative 之后编译,才能正确生成 Qt6ChartsQml QML 模块。

tar -xf downloads\qtcharts-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtcharts-everywhere-src-6.8.3 -B qt6\build_qtcharts ^ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install cmake --build qt6\build_qtcharts --parallel :: ~1.5 分钟 cmake --install qt6\build_qtcharts --prefix install

7. 编译 Fast DDS Statistics Backend

Statistics Backend 是 Monitor 的底层依赖库,封装了 Fast DDS 统计数据的收集逻辑。

7.1 克隆源码

powershell cd C:\fastdds git clone --depth 1 -b v2.5.0 https://github.com/eProsima/Fast-DDS-statistics-backend.git

7.2 编译安装

set CMAKE_PREFIX_PATH=C:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows cmake -G Ninja -S Fast-DDS-statistics-backend -B build\statistics_backend ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_PREFIX_PATH=%%CMAKE_PREFIX_PATH%% ^ -DCMAKE_INSTALL_PREFIX=install cmake --build build\statistics_backend --parallel :: ~30 秒 cmake --install build\statistics_backend --prefix install

8. 编译 Fast DDS Monitor

8.1 获取源码

cd C:\fastdds git clone --depth 1 -b v4.1.0 https://github.com/eProsima/Fast-DDS-Monitor.git

8.2 编译

set CMAKE_PREFIX_PATH=C:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows cmake -G Ninja -S Fast-DDS-Monitor -B build\fastdds_monitor ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_PREFIX_PATH=%%CMAKE_PREFIX_PATH%% cmake --build build\fastdds_monitor --parallel :: ~30 秒 cmake --install build\fastdds_monitor --prefix install

8.3 运行

cd C:\fastdds\install\bin fastdds_monitor.exe

首次启动时会出现主窗口,点击Start按钮进入监控界面。


9. 常见问题与修复

Q1: 程序崩溃,退出码 -1

原因:VC++ 运行时 DLL 或 Fast DDS DLL 不在运行目录或 PATH 中。
解决:从 vcpkg\installed\x64-windows\bin 复制以下 DLL 到运行目录:

  • fastdds-3.6.dll, fastcdr-2.3.dll, foonathan_memory-0.7.4.dll
  • tinyxml2.dll, libssl-3-x64.dll, libcrypto-3-x64.dll
  • 或者安装 Visual C++ Redistributable

Q2: 编译错误 “module Clipboard is not installed”

原因:该 Monitor 使用 qmlRegisterType 注册 C++ 类型到 QML,但在某些 Qt6 版本中 QML 引擎无法解析。
解决方案(源码级)

  1. 修改 qml/TabLayout.qml,移除 import Clipboard 1.0,将 ClipboardHandler 替换为 Item
  2. 修改 src/Engine.cpp,添加 include,通过 setContextProperty 注入
  3. 修改 src/main.cpp,注释掉 qmlRegisterType 调用
// Engine.cpp 中修改#include<fastdds_monitor/io/ClipboardHandler.h>// 在 enable() 方法中添加:rootContext()->setContextProperty("clipboardHandler",newClipboardHandler(this));

Q3: 编译错误 “module QtCharts is not installed”

原因:QtCharts 在编译时没有生成 QML 模块(Qt6ChartsQml.dll)。
解决:确保 qtcharts 在 qtdeclarative 之后编译,或者在安装了 QML 后重新编译。

cmake --build qt6\build_qtcharts --parallel cmake --install qt6\build_qtcharts --prefix install

Q4: “Cannot open: file:///resources/images/…” 错误

原因:使用文件系统加载 QML 时,qrc:/resources/… 路径无法解析。
解决:使用 QRC 编译方式(默认方式),或复制 resources/ 目录到 QML 文件所在目录。

Q5: GitHub 克隆超时

解决

  • 使用镜像:https://gitclone.com/github.com/eProsima/…
  • 使用代理:git config --global http.proxy http://proxy:port
  • 多次重试

10. 创建独立运行包

10.1 最终目录结构

FastDDSMonitor/ ├── run.bat # 一键启动 ├── fastdds_monitor.exe # 主程序 ├── Qt6Core.dll # Qt6 运行库 ├── Qt6Gui.dll ├── Qt6Qml.dll ├── Qt6Quick.dll ├── Qt6Charts.dll ├── fastdds-3.6.dll # Fast DDS 运行库 ├── fastdds_statistics_backend-2.5.dll ├── fastcdr-2.3.dll ├── foonathan_memory-0.7.4.dll ├── tinyxml2.dll ├── libssl-3-x64.dll ├── libcrypto-3-x64.dll ├── msvcp140.dll # VC++ 运行库 ├── vcruntime140.dll ├── plugins/ # Qt 插件 │ ├── platforms/qwindows.dll │ ├── styles/qmodernwindowsstyle.dll │ ├── imageformats/qjpeg.dll │ └── ... └── qml/ # QML 模块 ├── QtQuick/ ├── QtCharts/ ├── QtQml/ └── ...

11. 使用指南

11.1 启动与连接

  1. 启动 Monitor - 双击 run.bat 或直接运行 fastdds_monitor.exe
  2. 初始界面 - 显示 Main Start View,包含产品信息和 Start 按钮
  3. 开始监控 - 点击 Start 按钮,弹出监控配置对话框
  4. 选择域 - 默认监听 Domain ID 0,可根据需要修改

11.2 界面布局

+--------------------------------------------------------+ | Menu Bar (文件/视图/工具/帮助) | +------+-------------------------------------------------+ | | Tab Bar: DDS | 统计 | 告警 | 日志 | | Icon |-------------------------------------------------| | Bar | 主内容区域(根据 Tab 切换不同视图) | | | - DDS 视图: 树状结构展示 Participants/Topics | | | - 统计视图: 实时折线图/柱状图 | | | - 告警视图: 告警列表和配置 | | | - 日志视图: 日志输出 | +------+-------------------------------------------------+ | Status Bar (连接状态/统计概览) | +--------------------------------------------------------+

11.3 DDS 实体发现

Monitor 会自动发现网络中的 DDS 实体,按两种视图组织:

物理视图 (Physical View):

  • Host(主机名)-> User(用户)-> Process(进程 PID)-> Participant -> Writer/Reader

逻辑视图 (Logical View):

  • Domain(域 ID)-> Topic(主题名)-> Writer/Reader

11.4 统计图表

支持以下统计指标的实时图表展示:

  • Latency: 端到端延迟
  • Throughput: 吞吐量 (bytes/s)
  • Packet Loss: 丢包率
  • Sample Count: 数据样本数
  • Data Size: 数据大小
  • Reliability: 可靠性统计

附录:编译耗时参考

组件耗时
Qt6 qtbase (Core/Gui/Widgets)~7 分钟
Qt6 qtshadertools~1 分钟
Qt6 qtdeclarative (Qml/Quick)~8 分钟
Qt6 qtcharts~1.5 分钟
Fast DDS Statistics Backend~30 秒
Fast DDS Monitor~30 秒
总计~18 分钟

以上耗时基于 12 核 CPU + NVMe SSD 测试,使用 Ninja 并行编译。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 9:50:57

从测温枪到热成像:聊聊红外摄像头标定里那些容易被忽略的细节(黑体源、对准、非均匀性)

从测温枪到热成像&#xff1a;红外摄像头标定中的实战陷阱与高阶解决方案在工业检测、医疗诊断和安防监控等领域&#xff0c;红外热成像技术正从定性观察工具升级为定量测量系统。但当我们把实验室里精心标定的红外摄像头搬到嘈杂的工业现场时&#xff0c;常常会发现标定参数&q…

作者头像 李华
网站建设 2026/5/30 9:49:01

SMS-Activate.org网站改版后怎么用?一篇讲清新界面、充值变化和省钱技巧

SMS-Activate.org改版实战指南&#xff1a;界面迁移解析与高阶使用策略每次工具迭代都像一次小型移民——熟悉的按钮消失了&#xff0c;操作路径被打乱&#xff0c;甚至充值规则也悄然改变。对于依赖SMS-Activate.org获取国际验证码的数字游民、跨境电商运营者和开发者而言&…

作者头像 李华
网站建设 2026/5/30 9:47:45

构建可观测、可干预、可逆的AI系统:从数据到部署的容错实践

1. 项目概述&#xff1a;我们真的只有一次机会吗&#xff1f;“我们只有一次机会让人工智能走上正轨……真的吗&#xff1f;” 这个标题乍一看&#xff0c;像是一个充满哲学思辨的宏大命题&#xff0c;带着一丝紧迫感和宿命论的色彩。但作为一名在科技行业摸爬滚打多年的从业者…

作者头像 李华
网站建设 2026/5/30 9:42:59

告别U盘!用PXE+NFS给裸机批量装Ubuntu 22.04,一次配置,无限克隆

告别U盘&#xff01;PXENFS批量部署Ubuntu 22.04全实战指南当机房里堆满待安装系统的裸机时&#xff0c;传统U盘安装方式的低效问题会暴露无遗。我曾经历过为50台服务器逐一安装系统的噩梦——不仅耗时长达两天&#xff0c;还因为人为操作失误导致三台机器配置不一致。直到掌握…

作者头像 李华