iOS pb编译器使用
来源:互联网 发布:网络主播传媒公司 编辑:程序博客网 时间:2024/05/16 13:47
Protocol Buffers 是 Google 出品的用来序列化/反序列化数据的工具。原生支持 C++、Java、Python。
如果要在 iOS 上使用 PB,可以直接使用 C++,但是编译过程很麻烦,因此这里使用的是第三方的库。
安装 Protocol Buffers
- 安装 homebrew
1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装 automake、libtool、protobuf。这里安装的 protobuf 是 google 官方版本。
123
brew install automakebrew install libtoolbrew install protobuf
如果后面的步骤出错了,请确保已经安装了这些工具:automake、autoconf、autoreconf、aclocal、libtool、protoc。其中的 protoc 用来把 .proto 文件编译成 C++、Java 或 Python 代码。
- 编译 protoc-gen-objc。protoc-gen-objc 是 protoc 的一个插件,使其能将 .proto 文件编译成 objective-c 代码。
12345678910111213
git clone git@github.com:alexeyxo/protobuf-objc.gitcd protobuf-objc./autogen.sh# 后面的参数保证 configure 能找到 protobuf 相关的头文件和库# 避免报 protobuf headers are required 错误./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/libmakemake install如果出现以下错误
- 利用 protoc 将 .proto 文件编译成 objective-c 代码。
1
protoc message.proto --objc_out="."
如果出现下面的错误:
12
protoc-gen-objc: program not found or is not executable--objc_out: protoc-gen-objc: Plugin failed with status code 1.
可以尝试:
1
cp /PATH/TO/protobuf-objc/src/compiler/protoc-gen-objc /usr/local/bin
在 Podfile 中添加
pod 'ProtocolBuffers', '1.9.2'
然后执行pod install
。将生成的 .h 和 .m 文件添加到工程中,编译。
这里会提示找不到GeneratedMessageProtocol
。你只需要帅气地将其注释掉就行了。
使用
假设有 person.proto 定义如下
12345
message Person { required int32 id = 1; required string name = 2; optional string email = 3;}
通过 protoc 生成 Person.pb.h 和 Person.pb.m 两个文件。
- 序列化
1234
Person* person = [[[[[Person builder] setId:123] setName:@"Bob"] setEmail:@"bob@example.com"] build];NSData* data = [person data];
- 反序列化
12
NSData* raw_data = ...;Person* person = [Person parseFromData:raw_data];
参考
http://protobuf.axo.io/#objc
https://github.com/alexeyxo/protobuf-objc
0 0
- iOS pb编译器使用
- PB中嵌入了个C编译器
- 编译器使用
- iOS开发------使用Xcode编译器定位抛出异常的位置
- [PB]pb控件的使用样例
- PB的使用
- 浅谈PB使用心得
- PB程序使用串口
- PB窗口使用技巧
- PB游标使用
- Pb使用POSTURL
- pb文件的使用
- PB编译器出现低概率的编译错误
- PB通过OLEObject使用Word
- listview使用(摘自pb 帮助文件)
- PB中使用FORMULA ONE
- 【PB】使用任务栏通知区域
- 使用pb实现在线聊天!
- 寒假集训2 I 二分 hdu 5178
- 【机器学习算法】之Apriori
- alarmmanger set 不生效的问题
- windows下的socket的面向连接简单编程
- vim 中Ctags的安装和使用
- iOS pb编译器使用
- 【C#】基础知识—运算符
- XML DOM解析(Java)的一个简单实例
- 【C#】基础知识—流程控制语句
- java中的String,StringBuilder,StringBuffer
- MATLAB:1 matlab 与 c++ 数据存储的差异
- linux添加开机启动脚本
- Javascript学习笔记05——引用类型
- Parallels在激活时出现错误信息