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. Xcode “Build Setting”中的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. It means that you can not use lua bytecode on iOS if you build a single binary with both 32-bit and 64-bit code, because lua bytecode generated by lua and luajit are not compatible.

因此设置成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

时间: 2024-11-05 17:33:50

cocos2d-x v2.2 IOS工程支持64-bit 遇坑记录的相关文章

iOS程序支持64位以及project.pbxproj文件的介绍

程序从32bit转到64bit总结: 一.出现各种 "OBJC_CLASS$_ShareSDK", referenced from: 解决方案: 网上版本: - 选中Targets->Build Settings->Architectures. 把build active architectures only 改为 NO. - 把最下面的Valid Architectures中的arm64参数删掉就可以了(但这样不是反倒不支持64位了?) 或者: - 双击Architect

Unity3d使用高通Vuforia发布IOS工程不支持64位的一些解决办法

1.将Unit升级至4.6.x或5.0.x,将Vuforia差距升级到最新版本(vuforia-unity-mobile-android-ios-4-0-105 ) 2.平台Other Settings设置中将 Scripting Backend设置为:IL2CPP ,Architecture设置为:Universal 4.6及以后的版本才有. 3.在Xcode的Build Settings中 将Architectures设置为Standard architecture,Valid Archit

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

[官方] Unity4.6.2发布,支持64位iOS

Unity4.6.2现在已经正式发布并且提供下载,这是Unity第一个支持64位iOS的正式版本,采用了最新的IL2CPP 技术. 下载请访问:http://unity3d.com/cn/unity/download IL2CPP是Unity内部开发的一款创新型脚本技术.它能极大地提高项目中所有脚本的性能,并且完美兼容当前iOS构建所使用的Mono-AOT解决方案. 我们可以使用IL2CPP将脚本快速移植到新平台(例如WebGL等)及架构,ARM64(64位iOS系统架构)就是其中之一.使用Un

iOS 怎么检测app支不支持64位

在2015年2月1日新的iOS应用提交到App Store的开始必须包括64位支持并与iOS 8 SDK构建.2015年6月1日开始的应用程序更新也要遵循同样的要求.为了使项目中的64位,我们建议使用默认的Xcode编译设置"标准结构"来建立一个单一的二进制与32位和64位代码. 在你已经纠正了问题,你可以用Xcode应用程序或上传一个新的二进制iTunes Connect. 1.检测项目中有没有不支持64的sdk (1)Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到6

iOS第三方平台不支持64位的解决办法

来源地址:http://blog.csdn.net/sky_2016/article/details/39737279 phone5s才用64位双核苹果A7处理器,所以上线的app必须支持64位环境.但是现在有很多第三方平台,不支持64位容易开成以下类似的错误 Undefined symbols for architecture x86_64: \\\\\\\\\\\\\\\"_OBJC_CLASS_$_QQApiInterface\\\\\\\\\\\\\\\", reference

iOS工程适配64-bit经验分享

终究还是来了.Apple下发了支持64位的最后通牒: As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the sam

转载 IOS工程适配64-BIT 经验分享

终究还是来了.Apple下发了支持64位的最后通牒: As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the sam

iOS工程适配64-bit经验分享(转)

终究还是来了.Apple下发了支持64位的最后通牒: As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the sam