近期在搞cocos2dx lua 2.2.6 中加入laujit;费了一番周折,这里记录一下,省的别人走弯路。
我是用的luajit版本号是luaJIT 2.1.0-beta2。
因为有现成的库,我就没有自己再编译去生成。
去cocos官网下载一份cocos2dx 3.16,
将
cocos2d-x-3.16\external\lua\luajit\include
cocos2d-x-3.16\external\lua\luajit\prebuilt
两个文件夹中的头文件和库文件,加入到自己的项目中,替换原有的头文件和库文件。
编译项目的so.(这里就不详细说明了)
下面说说遇到的几个主要的问题:
问题一:
验证:通过dump(jit,"luajit");输出信息;发现项目库中已经包含luajit
但是将通过luajit编译过的lua代码加入,发现报错误,无法编译通过
[LUA ERROR] load "assets/scripts/app/views/gameView/GameView.lua", error: syntax error during pre-compilation.
解决:检查一下是luajit的32位跟64位的关系。我使用的android模拟器使用的都是32位的,我编译的是64位的,所以在32位机型上报错。
最后使用32位的重新编译,成功。
编译luajit的批脚本:
文件名:luajit_32.bat
@echo off
set DIR=%~dp0
cocos luacompile -s %DIR%../scripts/ -d %DIR%../scripts_32bit/
echo "scripts Luajit_32bit complete!"
文件名:luajit_64.bat
@echo off
set DIR=%~dp0
cocos luacompile -s %DIR%../scripts/ -d %DIR%../scripts_32bit/ --bytecode-64bit
echo "scripts Luajit_64bit complete!"
问题二:
由于我们使用bugly统计应用崩溃和错误;发现使用luajit之后,从堆栈中取到的错误信息没有 行号。
最后发现:luajit 编译的指令是 luajit -b 。这时只要改为 luajit -b -g ;就可以输出debug信息。
至于想要了解更详细的luajit的编译指令可以搜索一下。
如果有什么疑问,请留言一起讨论。