protobuf2.5在iOS上编译及cocos2dx混合使用的问题

项目代码里使用了protobuf作为协议层的的编码解码库, 所以需要编译成arm系列架构的静态库供游戏使用. 在编译过程中十分坎坷,首先,protobuf的源码在编译时如果直接使用configure生成的makefile编译会有error,后来在网上找到了https://gist.github.com/BennettSmith/7150245这个build脚本,终于build出来了一个可以用的静态lib(需要注意的是在build过程中会访问google code和Github去下载源码包和补丁,而这两个网站又因为gfw的问题时好时坏,所以如果build过程中遇到问题,请先确认是否是gfw导致的问题)。

后来在cocos2dx工程中引用该lib的时候发现编译没有问题 但是链接的时候就会报各种莫名其妙的链接失败,找不到符号表的错误。追查了很久发现cocos2dx的project_creator生成的工程的llvm编译器属性设置里使用c++标准和标准库默认是: 在此输入图片描述

但是protbuf里因为代码里使用一些c++11新增特性的功能,所以编译时就使用了如下配置: 在此输入图片描述 因此两个库使用的针对c++语言的编译器属性设置不同导致出现了如上的链接问题,解决办法也很简单,就是把所有以源码方式引入的第三方库(包括cocos2dx)的编译器的配置都改为如上的c++11和libc++就ok了。

另外,网上也有人采用直接在工程中引入protobuf源码的方式来解决这个问题,我经过测试也是可行的,没有采用这种方式的原因在于这种方式如果要build一个protobuf-lite需要分析它的makefile来确认要生成protobuf-lite到底只需要那些文件,而由于我们自己项目时间有限,所以我就没有过多的尝试,只是确认了这种方式也是一种可行的方案,具体操作步骤不再赘述,附链接地址: http://stackoverflow.com/questions/10277576/google-protocol-buffers-on-ios

转载于:https://my.oschina.net/pigsoldier/blog/203977

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值