由于跟c对接 需要用到Protobuffer 于是在网上各种查资料 最后搞成了这个 总结一下心得
Protobuffer的背景历史就不介绍了 网上自己闲着没事自己百度去吧 直接说一下我的过程吧
注意点:不要用cocopods把Protobuffer搞下来 倒到项目中我的反正报错了 居然包Protobuffer库找不到 你要是不信的话 你搞搞试试,姑且吧我的报错信息给你:This file was generated by a different version of protoc which is incompatible with your Protocol Buffer library sources
我只有放弃了cocopods 直接从https://github.com/google/protobuf 下载下来放到工程里去
来 搞一下我的流程
A>先安装pb环境
1、从https://github.com/google/protobuf/releases下载protocolBuffer对应版本编译器包,比如目前的对应的objc最新版本
下载地址为:https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.zip
2、解压包,假设解压后的文件夹名为: protobuf-objectivec-3.1.0,
打开终端,进入文件夹protobuf-objectivec-3.1.0, 依次执行以下命令:
./configure
make
make check
sudo make install
如果编译顺利的话,便可以使用protoc命令了,以后便可以用这个命令将.proto文件转换为不同语言的源代码文件。
B>创建新项目,导入pb库,编写proto文件编译,使用过程
1、从https://github.com/google/protobuf.git下载源码,解压,里面有支持不同语言的版本源码,
我们只需要里面的支持objc的文件夹名为:objectivec,如图:
2、新建一个工程命名为VPNSDK,创建一个文件夹,假设命名为:protocolbuf, 把第一步的pb源码复制到此文件夹中:
3、使用Xcode打开工程,点击左下角“+”, 引用protocolBuffer源文件到工程中
(源文件里面有两个工程配置文件:ProtocolBuffers_iOS.xcodeproj和ProtocolBuffers_OSX.xcodeproj,引用ProtocolBuffers_iOS.xcodeproj就好)
4、选中工程: targets —> Build Phases —> Link Binary With Libraries, 引用源码静态库文件:libProtocolBuffers.a
5、在工程设置搜索静态库的头文件(pb文件在protocolbuf文件夹里面):
targets —> Build Setting —> Search Paths —> Header Search Paths, 写入:$(PROJECT)/protocolbuf
6、编写测试文件*.proto,比如新建一个文件Person.proto, 按照官方标准语法https://developers.google.com/protocol-buffers/ 编写通用代码,
写好后在终端进入该demo.proto文件所在目录,使用protoc命令:protoc *.proto --objc_out=../Pro_out 进行编译
把demo.proto文件编译成demo.pbobjc.h和demo.pbobjc.m, 生成的文件在Pro_out文件夹里面。
将编译好的*.pbobjc.h和*.pbobjc.m拖入工程中,因为不支持arc, 所以需要在*.pbobjc.m设置-fno-objc-arc, 然后就可以使用了。
就这么简简单单的搞完了
运行结果
不要问我是谁 我叫雷锋 直接看方法 用就完了