目录
将数据序列化成二进制并报存到文件中,再将文件中的二进制数据都上来
到protobuf源码找到不同版本的压缩包,下载下来,并拉取到linux中。
protobuf源码地址:https://github.com/protocolbuffers/protobuf
进入官网点击tags,里面就有不同版本的protobuf的压缩包,选择版本,根据对应语言下载。
执行protoc --version 显示出protobuf的版本,即编译成功。

编写的proto文件:

编写生成.cc和.h脚本,使用protoc:

使用--proto_path选项,后面跟需要解析的.proto文件所在目录。如果有多个目录,可以调用多次--proto_path选项。 -I 是 --proto_path的缩写。
上图中的--cpp_out选项,则是生成CPP相关代码。
- --cpp_out :在目标目录DST_DIR中产生C++代码
- --java_out :在目标目录DST_DIR中产生Java代码
- --python_out :在目标目录 DST_DIR 中产生Python代码
- --go_out :在目标目录 DST_DIR 中产生Go代码
- --ruby_out:在目标目录 DST_DIR 中产生Ruby代码
- --javanano_out:在目标目录DST_DIR中生成JavaNano
- --objc_out:在目标目录DST_DIR中产生Object代码
- --csharp_out:在目标目录DST_DIR中产生Object代码
- --php_out:在目标目录DST_DIR中产生Object代码
在对应目录下生成CPP可以使用的文件。

编写一个简单的proto文件,并用protoc生成.cc和.h文件。

编写测试代码:

Makefile文件:

执行:

注意:并非编码成字符串数据,string只是作为编码的容器。所以会有乱码出现。
遇到的问题:

这时因为引用了protoc生成的.h和.cc文件,需要将生成的.cc文件一起编译。


这是因为找不到libprotobuf.so.32动态库,需要将动态库的路径加到LD_LIBRARY_PATH环境变量中。
fstream:对打开的文件可以进行读写操作。在构建对象时,可以打开文件,并选择打开方式读还是写,二进制方式还是文本方式。
从文件输入,并进行序列化:

输出到文件函数:

主函数:

makefile:

运行:
