cocos2dx-c++接入protobuf(xcode ios)

压根没有写博文的习惯,但是这次项目因为protobuf耽误了很多时间,而且baidu和Google上我也找了很多方法,走了很多弯路,但终究还是弄好了,为了庆祝下,就分享下配置过程吧。

1.我的配置环境:

              系统:macOS Mojave10.14.16;

              Xcode:v10.3;

              protobuf:v2.5.0;

              cocos2dx:v3.17.2。

2.下载protobuf:

下载地址:https://github.com/protocolbuffers/protobuf/releases

有博文介绍cocos2dx接入protobuf要到cocos2d-x\tools\simulator\libsimulator\lib\protobuf-lite路径下看config.h文件里看protobuf的版本,其实没必要,直接区上面地址下载一个你喜欢的版本就行了,zip和tar.gz无所谓。

3.protobuf安装:

解压下载的protobuf压缩包,打开终端cd到解压后的目录,在该目录下依次执行(如果权限不够就在命令前加sudo):

(1)./configure

(2)make

(3)make check(可跳过)

(4)make install

安装完成后在输入 protoc --version,如下图出现proto版本号即为安装成功

4.将proto文件生成pb.h和pb.cc文件

比如我的proto文件为test.proto,为了省事,我是直接将test.proto文件复制到/usr/local/bin,然后终端cd到该路径下,执行./protoc -I=./ --cpp_out=./ ./test.proto,如下图就会在该路径下生成另外两个文件

4.生成可供xcode使用的静态库

网上能查到的总结一下就三种方法(第三种成功):

第一种就是直接用安装protobuf自动生成的静态库,头文件在/usr/local/include,静态库文件在/usr/local/lib

我试过,这些都是x86_64,可以用,在xcode上跑模拟器没问题,但是不能跑在ios真机上,因为真机是arm64、arm7v、arm7vs,所以我们要自己生成支持真机的库。

网上的第二种方法就是用脚本自动生成,我试了都只能生成x86_64

第三种方法就是自己将protobuf源码通过xcode打包成静态库:

(1)在protobuf解压目录下创建一个文件夹,为了方便讲解,我把文件夹命名为XcodeProject,如图

(2)xcode新建项目,选择Cocoa Touch Static Library

next

自己随便命名,包名也随意,语言选OC,然后点next设置项目路径,选择刚创建的XcodeProject目录

(3)创建完成后

(4)将protobuf解压路径下src里的google拖进xcode

(5)再将解压路径下的config.h拖进xcode,跟上一步一样,不要复制,勾选添加

(6)将google/protobuf/compiler和google/protobuf/testdata文件夹从工程中移除,记住是移除出当前项目,不是删除

(7)在如下所示的地方输入test,将搜索出来带test的文件全部移除,记住是移除

(8)添加头文件引用

(9)打开stubs/platform_macros.h,添加:

#elif defined(__aarch64__)
#define GOOGLE_PROTOBUF_ARCH_ARM 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1

(10)修改google命名空间

protobuf的命名空间可能会与apple的命名空间冲突,所以修改一下

打开google/protobuf/stubs/common.h

在如下位置添加

#define google google_private

(11)添加头文件

如下图,点击+号将项目中所有的头文件添加进来

(12)设置run为release

(13)build

这里选择iOS Device build出的静态库就可供真机使用,选择模拟器build出的库可供模拟器使用

这里提一点,新的xcode在这里build会报错,只需打开File-》Project Settings将build syatem改为Legacy Build System就行了

 

5.将protobuf集成到cocos2dx项目中

(1)build success之后会在Products下看到一个.a文件,这个就是我们所需要的静态库,右键Show in Finder

(2)为了集成方便,我在cocos2dx项目下创建了一个ProtoBuf文件夹

include文件夹我没用生成静态库生成的,而是直接复制的/usr/local/include文件夹,复制过来后并将里面的compile文件夹删除。

将上一步生成的静态库.a文件复制到ProtoBuf/lib文件夹下。

(3)用xcode打开cocos2dx项目

(4)将pb文件添加进Classes

(5)添加静态库

为了测试方便,我添加了两个,一个是模拟器用的,一个是真机用的

(6)设置头文件搜索路径和静态库路径

(7)集成完成,测试

引入头文件,使用protobuf。

 

 

以上就是我为cocos2dx c++在mac下配置protobuf的步骤,如有不对,欢迎指正

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值