1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。
安装步骤如下所示:
tar -xzf protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=/usr/local/protobuf
make
make check
make install
2 > sudo vim /etc/profile
添加
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行
source /etc/profile
同时 在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令
3 > 配置动态链接库路径
sudo vim /etc/ld.so.conf
插入:
/usr/local/protobuf/lib
4 > su #root 权限
ldconfig
5> 写消息文件:msg.protopackage lm;
message helloworld
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
将消息文件msg.proto映射成cpp文件
protoc -I=. --cpp_out=. msg.proto
可以看到生成了
msg.pb.h 和msg.pb.cc
6> 写序列化消息的进程
write.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
int main(void)
{
lm::helloworld msg1;
msg1.set_id(101);
msg1.set_str("hello");
fstream output("./log", ios::out | ios::trunc | ios::binary);
if (!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -1;
}
return 0;
}
编译 write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf` -lpthread
执行write
./write, 可以看到生成了log文件
7> 写反序列化的进程
reader.cc
#include "msg.pb.h"
#include <fstream>
#include <iostream>
using namespace std;
void ListMsg(const lm::helloworld & msg) {
cout << msg.id() << endl;
cout << msg.str() << endl;
}
int main(int argc, char* argv[]) {
lm::helloworld msg1;
{
fstream input("./log", ios::in | ios::binary);
if (!msg1.ParseFromIstream(&input)) {
cerr << "Failed to parse address book." << endl;
return -1;
}
}
ListMsg(msg1);
}
编译:g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf` -lpthread
执行./reader 输出 :
101
hello
8> 写Makefile文件all: write reader
clean:
rm -f write reader msg.*.cc msg.*.h *.o log
proto_msg:
protoc --cpp_out=. msg.proto
write: msg.pb.cc write.cc
g++ msg.pb.cc write.cc -o write `pkg-config --cflags --libs protobuf`
reader: msg.pb.cc reader.cc
g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf`
分享到:
相关推荐
Linux下安装protobuf教程+示例详细的代码.
google protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。google protobuf是跨语言的,并且...这是一protobuf的安装程序,里面有示例及安装教程,欢迎下载使用。
protobuf基于IMX287的ARM嵌入式系统上的移植,包括源代码,示例,和文档
这是一个如何使用模块创建现代 C ++项目的示例,以将依赖项包含为子项目。 该项目应在Linux,Mac和Windows上运行。 CMake依赖树 稍微复杂一点,CMake项目由一个具有以下依赖关系的可执行文件(FooApp)组成: ...
s2client-api通过StarCraft II API,可以访问游戏中的状态观察和...您可以在下面看到一个简单的示例。 #包括 #包括 使用名称空间sc2; 类Bot:公共代理{公共:虚拟void OnGameStart()最终{std :: cout <<
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
它以Protobuf作为基本的数据交换格式,支持完全基于POJO的发布方式,极大的简化了开发复杂性 - 完全支持POJO方式发布,使用非常简单 - 内置连接池,具备更高的性能,低延迟 QPS: 5w+ - 支持自动重连功能 - Client...
系统需要安装 Docker; 要在 Linux 上执行此操作,请运行: wget -qO- https://get.docker.com/ | sh为基于 debian 的系统推荐的 Python 包(没有这些,你将需要开发头文件和编译器): makepython-psycopg2python-...
支持的编码仅限于 Google Protobuf。 通过指定开始日期可以下载部分数据。 不支持日期范围或结束日期。 仅在带有本地 Sierra Chart DTC 服务器的 Linux 上测试。安装使用你可以直接从 Github 安装: pip install ...
可以使用CodeReason创建的其他工具的示例可在tools /目录中找到。 建造 CodeReason构建在Linux和OS X上。Windows已被破坏。 ! 要求 具有自定义补丁的支持静态分析 用于单元测试 用户界面的 进行漂亮的印刷拆卸 的...
└── zheng-demo -- 示例模块(包含一些示例代码等) ├── zheng-demo-rpc-api -- rpc接口包 ├── zheng-demo-rpc-service -- rpc服务提供者 └── zheng-demo-web -- 演示示例[端口:8888] ``` ### 技术...
OLA在Linux和Mac OS X上运行,某些功能也将在Windows上运行。 OLA还可以用于在不同的网络协议之间进行转换。 通过使用USB到DMX512设备,OLA可以充当DMX-over-IP到DMX512网关。 OLA由三部分组成:守护程序olad,...