cocos2d-x v2.2 IOS工程支持64-bit 记录
修改缘由由于 iPhone 5S的A7 CPU iPhone 6(A8 CPU)都已经支持64-bit ARM 架构,据说64位处理器跑64代码会提高处理能力?因此二月一新提交appstore应用必须支持64位并且六月份更新应用也必须支持。 支持64bit关于Xcode “Build Setting” 设置1.Xcode “Build Setting”中的Architectures参数必须设置Standard architectures (armv7,arm64). 2.中的Valid Architectures 包含armv6 armv7 arm64 貌似两个指令集交集才是最终支持的版本 cocos2d-x 修改点:cocos2d-x v2.2.6 已经支持64-bit,可以对照修改
1.libcurl.a libwebp.a 和相应的头文件 替换成支持64bit 库 2.2.6版本查找
cocos2d/kazmath/src/neon_matrix_impl.c cocos2d/kazmath/src/mat4.c #if defined(__ARM_NEON__) 替换成 #if defined(_ARM_ARCH_7)
2.luajit 不支持64位如下: Because luajit doesn't support 64-bit,so we use lua on iOS 64-bit. Considering performance issue,all other platforms include iOS 32-bit,we uses luajit. 因此设置成64位 使用lua 32位代码依旧使用luajit设置如下: Xcode “Build Setting”中的LIbrary Search Paths: 添加:"$(SRCROOT)/../../../scripting/lua/lua/ios" (检查符合自己工程路径) Other Linker Flags: 增加如下参数 -z -lua (不懂,求大神答疑。貌似为了能连接到~) 3.检查第三方库,如 友盟 talkingdata 等一般都发布了最新版本 4.cocos2dx.xcodeporjArchitectures参数不要忘记修改成支持64位
5.根据上述改变,官方文档64-Bit Transition Guide for Cocoa Touch检查代码 主要问题是指针。32位处理器4位,和int一样可以互转。64位处理器指针是8位不能直接转成int 要用intptr_t(不同处理器下定义与指针同位数) 例如: CCCallFuncND::create( this,callfuncND_selector(Test::TestFunc1),(void *)10),NULL );
回调中想传递参数10 32位时对于回调参数void* data 直接(int)data 即可,但64位会变异不过,要修改为(int)(intptr_t)data 注意不要与如下用法用混: int a = 10 CCCallFuncND::create(this,callfuncND_selector( Test::TestFunc2),&a); 传递指针int num = *(int*)data (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |