protobuf官方版没有C语言实现, 只有C++的实现. 本文给出一种C语言的极简
实现方案.
至于protobuf的编码协议, 读者自己去官方看吧, 不复杂. 一定要看懂, 否则怎么造轮子
以下是已经制作好的工具, 将proto文件转为c文件的代码生成器(Java实现).
https://github.com/wzjwhut/protobuf-to-c/tree/master/protobuf_c_generator/bin
使用方法:
- 将proto文件,
protoc.exe
,protoc.jar
放在同一个文件夹中 - 执行
java -jar protoc.jar your.proto
项目中已经有测试用的demo
将protobuf_c.c
, protobuf_c.h
加入工程一起编译
c接口使用例子
uint8_t* data;
int out_len;
{
/** 序列化的例子 */
MyType mytype;
MyProto myproto;
MyType_init(&mytype);
MyType_set_i32(&mytype, 123);
MyProto_init(&myproto);
MyProto_set_i32(&myproto, 456);
MyProto_set_i64(&myproto, 789);
pb_string str = PB_STR("hello");
MyP