简单记录一下.
主要是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_1
和LUA_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,在这里设置好引用和编译宏,基本就不会有大问题