很早以前cocos2dx项目中使用luajit,不支持64位;现在升级到cocos2dx4.0以后同样遇到这个问题,好记性不如记录下来。
问题描述:
使用cocos luacompile编译lua文件时,使用—bytecode-64bit选项时,默认编译的字节码,在cocos2dx引擎中却报”luajit,error: syntax error during pre-compilation”错误。解决步骤
cocos2dx的问题列表中,有用户反映是cocos luacompile中的luacompile插件版本问题。所以我尝试下载源码重新编译。
下载源码: https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src.git
解压源码后- 2.1 代码编译报错,需要修改lib_os.c,ios中不支持system函数
1
2
3
4
5
6
7
8
9
10
11
12
int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
{
int rv = remove(fpath);
if (rv)
perror(fpath);
return rv;
} - 2.2 system函数更改为
1
2
3
4
5
int stat = system(cmd);
int stat = nftw(cmd, unlink_cb, 64, FTW_DEPTH | FTW_PHYS); 2.3 重新编译
1
2cd build
./build.sh -p=ios --libs=luajit --arch=armv7,arm64同时编译luajit的mac版本或者windows版本放入到cocos2d_console的plugins/plugin_luacompile/bin/64bit目录下
- 2.1 代码编译报错,需要修改lib_os.c,ios中不支持system函数
验证
使用cocos luacompile ——bytecode-64bit 编译lua脚本
运行cocos2dx项目能否解析字节码成功。