protobuf在IOS中的使用

     google的官网目前只支持C++、java、pyhon,虽说网络上还有object-c的  但是安装时总有各种问题,所以直接下载官网的包最新版protobuf-2.5.0:http://code.google.com/p/protobuf/downloads/list

    2.   拷贝protobuf-2.5.0/src/google  整个目录至项目中 并再把protobuf-2.5.0/config.h文件拷到项目中
3.   删除google目录中含有test字样的所有文件  参考:http://stackoverflow.com/questions/10277576/google-protocol-buffers-on-ios

4.   Build Setting 中Header Search Paths  改变头文件引用的路径为本目录 递归
5.     编译中遇到tr1的错误  删除含有tr1的字串  主要在config.h中
6.    删除其中一些引用测试文件的include      #include

7.  动态编译生成proto类文件  Builduild Rules中添加编译脚本:
  
     cd "$INPUT_FILE_DIR"   //转到当前被编译的文件目录
    /usr/local/bin/protoc  --cpp_out="$DERIVED_FILES_DIR"  "$INPUT_FILE_BASE.proto"  // protoc 为之前protobuf-2.5.0  解压安装生成的工具,注意改工具所在的路径,安装完一般在/usr/local/bin/protoc   
    $DERIVED_FILES_DIR 为xcode为每个项目编译时临时生成的一个数据文件目录,可以打印出来看下  只能编译输出到此目录,不能到当前项目根目录  不然编译会报错    

    cp "$DERIVED_FILES_DIR/$INPUT_FILE_BASE.pb.h" "$INPUT_FILE_DIR/$INPUT_FILE_BASE.pb.h"
    cp "$DERIVED_FILES_DIR/$INPUT_FILE_BASE.pb.cc" "$INPUT_FILE_DIR/$INPUT_FILE_BASE.pb.cc"
        //将生成的两个文件拷贝到项目根目录下

注意这些个脚本的写法
     
build setting中添加如下:
Problem solved. I used "-lstdc++" flag to "Other Linker Flags" and "libz.dylib" library to "Link Binary With Libraries".

百度云有demo
原文地址:https://www.cnblogs.com/cnsec/p/11515806.html