• 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

  • 相关阅读:
    SVM理论之最优超平面
    回归系列之L1和L2正则化
    Logistic回归明明称呼为回归但为什么是分类算法?
    LTE无线接入三层协议体系结构
    80 道大厂算法高频面试题
    linux内核调试技术之printk
    计算机视觉岗常见面试题
    偏差(Bias)和方差(Variance)——机器学习中的模型选择
    正态分布x/y轴
    Python time strftime()方法
  • 原文地址:https://www.cnblogs.com/xuling/p/5588985.html
Copyright © 2020-2023  润新知