Repolode
google

google/flatbuffers

一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。

可替代:Protocol Buffers

Star
26,567
Fork
3,712
未关闭 Issue
333
最近提交
5小时前

这是什么?

FlatBuffers 是一个面向内存效率设计的序列化库。数据以二进制缓冲区的形式存储,应用可以原地访问其中的字段,无需先反序列化为对象。在模式演进时,它同时保持前向和后向兼容。

开发者用 .fbs 模式文件描述数据结构,再通过 flatc 编译器为所需语言生成访问代码。项目提供 C、C++、C#、Dart、Go、Java、JavaScript、Kotlin、Lua、PHP、Python、Rust、Swift、TypeScript 等多种语言的代码生成与运行时库。

它支持 Windows、macOS、Linux 和 Android,并可在任何具备较新 C++ 编译器(C++11 及以上)的平台上使用。

核心功能

  • 01无需解析或解包,直接访问序列化数据。
  • 02通过同一份模式文件为多种语言生成访问代码。
  • 03在不同模式版本之间保持前向和后向兼容。
  • 04可在 Windows、macOS、Linux 和 Android 上运行。

适用场景

  • 在使用不同语言编写的服务或组件之间传递数据。
  • 需要快速且少分配内存读取的场景,例如游戏或嵌入式系统。
  • 通过内存映射读取大型序列化文件,无需整体加载。

快速上手

  1. 1

    使用 CMake 配置 flatc 的构建

    cmake -G "Unix Makefiles"
  2. 2

    编译 flatc 编译器

    make -j
  3. 3

    编写你的模式文件(.fbs),可参考 samples/monster.fbs 示例

  4. 4

    根据模式文件为你使用的语言生成代码

    ./flatc --cpp --rust monster.fbs

使用前须知

  • README 中没有提供 flatc 编译器的包管理器安装方式,需要用 CMake 和 C++ 编译器从源码构建。

标签

常见问题

flatbuffers 是什么?
一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。 FlatBuffers 是一个面向内存效率设计的序列化库。数据以二进制缓冲区的形式存储,应用可以原地访问其中的字段,无需先反序列化为对象。在模式演进时,它同时保持前向和后向兼容。
flatbuffers 可以免费使用吗?用的什么许可证?
flatbuffers 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
flatbuffers 还在维护吗?
活跃维护中。flatbuffers 最近一次提交是在 2026年10月21日。
flatbuffers 适合用来做什么?
在使用不同语言编写的服务或组件之间传递数据。 需要快速且少分配内存读取的场景,例如游戏或嵌入式系统。 通过内存映射读取大型序列化文件,无需整体加载。
flatbuffers 怎么安装和运行?
使用 CMake 配置 flatc 的构建: cmake -G "Unix Makefiles" 编译 flatc 编译器: make -j 编写你的模式文件(.fbs),可参考 samples/monster.fbs 示例 根据模式文件为你使用的语言生成代码: ./flatc --cpp --rust monster.fbs
在哪里获取 flatbuffers?
源代码和安装说明在 GitHub 上:https://github.com/google/flatbuffers

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目