巨好用企业网站源码,管理软件有哪几种,舟山论坛网,有什么网站可以做微信项目要求对lua脚本进行加密#xff0c;查了一下相关的资料 #xff0c;得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密#xff0c;试了一下#xff0c;确实可行。下面是使用原生的lua解释器编译字节码#xff1a; 新建一个名为1.lua的文件#xff0c;…项目要求对lua脚本进行加密查了一下相关的资料 得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密试了一下确实可行。下面是使用原生的lua解释器编译字节码 新建一个名为1.lua的文件里面只有一句话print(“HelloLua”)新建一个空的out.lua脚本文件 开始–运行–cmd3、luac-oout.lua1.lua
注luac -o [编译后脚本名] [脚本名]必要时带上脚本路径如 [编译后脚本名] [脚本名]必要时带上脚本路径
回车之后再打开out.lua就可以看到编译好的字节码了如 然后实验一下执行这个字节码脚本可以看到lua原生的解释器可以直接解析luac编译出来的bytecode脚本很方便 重点 做完了以上的一系列之后我照着这个方法编译项目中的脚本然后在cocos2dx环境下使用发现不行于是又查了一下资料发现2dx使用的是luajitlua原生编译出来的bytecode和luajit是不兼容的所以照着上面方法编译出来的bytecode脚本无法在2dx中使用。
解决这个问题其实很简单就是用2dx自带的luajit编译lua脚本下面附上luajit编译bytecode的方法 在cocos2d-x-2.2.3\scripting\lua\luajit\LuaJIT-2.0.1\src目录下有个msvcbuild.bat批处理文件需要先把luajit.exe这个东西给编译出来 打开visualstudio的命令行工具这个只要装了vs都会有在安装目录里面可以找到 用vs的命令行工具cd到luajit的src目录 执行msvcbuild.bat批处理文件编译出luajit.exe 将生成的luajit.exe、lua51.dll、jit复制到打包工具的相对目录下这样在工具中就可以直接调用luajit–bsource_fileout_file(一般都是lua后缀代码不用改动) 至此luajit编译bytecode加密已完成
严重注意 例子中我把编译前后的脚本名字取的不一样是为了让大家看出差异化来实际在项目中使用的时候脚本的名字编译前后最好都一致不然在脚本中相互require的时候可能会出现问题一个一个转换脚太麻烦了分享一个bat批处理可以批量转换一个文件夹中的所有lua文件
代码如下
echo off
if exist out rd /s /q out
mkdir out
:input
cls
set input:
set /p input 拖入要编译的lua文件夹
set input%input:%
if %input%: goto input
if not exist %input% goto input
for %%i in (%input%) do if /i %%~di%%i goto input
pushd %cd%
cd /d %input%nul 2nul || exit
set cur_dir%cd%
popd
set /a num 0
for /f delims %%i in (dir /b /a-d /s %input%) do (set /a num 1 luajit -b %%~fsi out/%%~nxi echo %%~nxi)
echo 编译脚本数量%num%
ATTRIB out/*.* R
pause编译后文件夹内所有的lua脚本将被批量编译为字节码并保存在xxx\out目录下如 注XXX为打包加密文件路径 还有小提示ios64目前只支持lua不支持用luajit生成二进制*.lua