quick cocos2dx解决ByteArray中readchar负数不正常的问题

这个问题只在Android真机和模拟器下出现,MAC和player中均无此问题

以下是出问题的代码

local ba = cc.utils.ByteArray.new()
ba:writeChar(-1)
print("ba:readChar()", ba:readChar())

此时打印出来的结果在Android真机(模拟器)上为0,而player中(win.mac)下均为-1,ios模拟器上为-1

此时出现2个结果,刚开始的时候以为是arm与x86结构不同而导致,后来证实ios下正常,说明了仅在android下有问题。

经查,在android下char类型默认编译选项是unsigned型,而此函数是通过lpack库导出,因此,需要在

quick/lib/cocos2d-x/scripting/lua/proj.android/Android.mk中原来

LOCAL_CFLAG += -Wno-psabi -DCC_LUA_ENGINE_ENABLED=1 $(ANDROID_COCOS2D_BUILD_FLAG)

后面加上 -fsinged-char

LOCAL_CFLAG += -Wno-psabi -DCC_LUA_ENGINE_ENABLED=1 $(ANDROID_COCOS2D_BUILD_FLAG)  -fsinged-char

删除当前项目下的obj里的文件,

重新sh build_native.sh

再生成apk文件,就正常了。

解决做法虽然简单,但这个过程却浪费了很长的时间。啧啧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值