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致使的问题)。ios

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

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

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

相关文章
相关标签/搜索