简单记录一下.

主要是5.1.5和5.3.1之间的一些函数差异性修改

cocos2d_lua_bindings工程下,将external/lua文件夹下所有文件删除,将5.3.1的lua src下的文件全部拷进去,同时在Build Setting,Build Phases中检查文件引用,我这边经常会引用到luajit文件夹下的lua.h,所以我将luajit的代码和引用全部删除了

player3的工程下,Build Setting中也要添加external/lua的引用

再次编译,将tolua++中报错的函数修改掉,这里我主要参照了 将cocos2dx里的lua升级至5.3 `这篇博客.

然后有几个他这篇博客里没有提及的,一个是lua_open()替换为luaL_newstate(),还有几个方法和之前版本的大小写不一样,直接用编译器提示修改了,不过为求保险和向下兼容性的话,应该在修改的地方都加上**LUA_VERSION_NUM > 501**的宏判断`

基本改完这些步骤,就可以用了,之后如果有遇到问题再补上

12.1 update.前几天处理gaf的问题,在LuaBasicConversions.h和lsqlite3里有好几个引用的Lua函数报引用错误,而且奇葩的是在编译quick的时候是ok的,查看引用啥的也没问题,用编译出来的quick新建工程就有问题,而且越改问题越多,后将lua重新用回5.15版.真是no zuo no die啊

2016.06.23 update. 由于个人需求,(主要是方便与skynet通讯,双端统一),再次尝试将版本升级到5.3.3,才发现是由于之前对quick的项目结构理解不够深入,故而失败,之前失败的原因是LUA_COMPAT_5_1LUA_COMPAT_APIINTCASTS未生效,今天处理完这2个地方之后,iOS成功编译通过,同时晚上编译过了android版,将安卓的一些tips记录如下

###Android 基本也是照那个博客的操作,不同的只是一些文件引用的位置不对,比如lua的编译是在extern/lua/lua文件夹下,在这个文件夹,是有一个Android.mk文件的,所以之前删除覆盖lua5.1的时候,这个文件应当保留,同时将里面的*.c文件列表更新成lua5.3版本的,同时注意.mk文件内,LOCAL_SRC_FILES:=xxxxx这种列举编译的文件名时,格式最好严格按照里面的方式写,我之前将中间的某行luajit注释掉,结果可能是注释姿势不对,导致编译出现奇怪的错误,注释行要删除掉. lua/lua里面的.mk文件,添加自定义宏

LOCAL_CFLAGS += -DLUA_COMPAT_ANDROID
LOCAL_EXPORT_CFLAGS += -DLUA_COMPAT_ANDROID
LOCAL_CFLAGS += -DLUA_COMPAT_5_1
LOCAL_CFLAGS += -DLUA_COMPAT_APIINTCASTS
LOCAL_EXPORT_CFLAGS += -DLUA_COMPAT_5_1
LOCAL_EXPORT_CFLAGS += -DLUA_COMPAT_APIINTCASTS

luaconf.h里面修改代码

#if defined(LUA_COMPAT_ANDROID)
    #define lua_getlocaledecpoint()		('.')
#else
    #define lua_getlocaledecpoint() (localeconv()->decimal_point[0])
#endif

quick-src目录下的所有的.mk文件,将luajit的引用,替换成 $(COCOS2DX_ROOT)/external/lua/lua

简而言之,所有.mk文件中有引用到luajit的,通通替换成lua,extern/lua/lua里面的.mk文件,可以理解为工程项目里的build-settings,在这里设置好引用和编译宏,基本就不会有大问题