Cocos2d-x V2.x版本对64bit的支持
原文链接:http://www.cnblogs.com/meteoric_cry/p/4171535.html
2015年2月1日后新提交的应用必须要支持64位架构。 我所使用的是cocos2d-x V2.0版本,而且源码有部分代码是修改过的。好在cocos2d-x官方已经放出了一个支持64位的2.2.6版本,可以做为参考。 iOS 64-bit support for v2.x>> zip包下载>> 在修改之前,有必要了解一下32位与64位的一些区别,网上能搜索到的资料有很多,这里简单列一下(尽量通过图表的方式)
I代表int、L代码Long、P代表Pointer 通过上图,大家很容易就发现主要的不同点在long与pointer上 参考资料: 32位程序与64位程序区别 将 Linux 应用程序移植到 64 位系统上 64位编程的33条军规 linux GCC 64位编程技巧 20 issues of porting C++ code on the 64-bit platform -------------------- 华丽的分隔线 -------------------- 还有一些准备工作需要做,升级Mac OS,然后安装XCode 6.x,只有6.x才支持IOS8.x,然后设置build的选项。 然后command + b进行build,如果报错,查看报错的信息然后使用cocos2d-x 2.2.6版本里面的代码与当前使用的代码进行对比,修改完成之后再次build 第三方库:libcurl记得替代,如果你还使用了其它的库,记得也一并替换掉。 在编译的过程中遇到的绝大部分的问题都能通过搜索获得到答案 :) 上面这个过程相对而言比较简单,对于自已写的代码,如果有函数需要获得指针的信息,把 int 改为 long 即可 (原理可参见本文的第一张图) 我遇到的主要问题是
凡是调用了CocosDenshion里方法的代码都会显示有问题,我就奇怪了,CocosDenshion我检查过编译的各项参数,也检查过当前编译项目的Library Search Path,确认所有的都没有问题,清理、重新编译,闹腾了好久还是没解决,直到第二天猛然看到这段错误上面一段提示,有一个路径,我用shell查了一下,发现了问题: 该目录下面居然有一个.a文件,不知道怎么操作的,也就是说它优先使用了这里的库(32位),导致无论我怎么编译和操作,新生成的静态库(libCocosDenshion.a)都是没有用到的,删除、编译,一切都OK了,太坑了,花了一天半的时间>_< 下面引用一段关于Undefined symbols for architecture 的说明(网上能搜索到关于它的问题不是armv7(s)就是使用cocos2d-x V3.x的处理方案,关于cocos2d-x的几乎是没有,好忧伤~ ~)
引用自:http://www.molotang.com/articles/1593.html 原文:http://stackoverflow.com/questions/6429494/undefined-symbols-for-architecture-armv7 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |