Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密
http://www.cocoachina.com/bbs/read.php?tid=205802
lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密。试了一下。确实可行。
以下是使用原生的lua解释器编译字节码:
1、新建一个名为1.lua的文件。里面仅仅有一句话print("Hello Lua"),新建一个空的out.lua脚本文件
2、開始--执行--cmd
3、luac -o out.lua 1.lua
注: luac -o [编译后脚本名]
[脚本名],必要时带上脚本路径,如:

回车之后,再打开out.lua就能够看到编译好的字节码了

然后实验一下。运行这个字节码脚本。能够看到lua原生的解释器能够直接解析luac编译出来的bytecode脚本,非常方便!

重点:
做完了以上的一系列之后。我照着这种方法编译项目中的脚本,然后在cocos2dx环境下使用,发现不行!于是又查了一下资料,发现2dx使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以照着上面方法编译出来的bytecode脚本无法在2dx中使用。
解决问题事实上非常easy。就是用2dx自带的luajit编译lua脚本,以下附上luajit编译bytecode的方法:
1、在cocos2d-x-2.2.3\scripting\lua\luajit\LuaJIT-2.0.1\src文件夹下有个msvcbuild.bat批处理文件。须要先把luajit.exe这个东西给编译出来。
2、打开visual studio的命令行工具,这个仅仅要装了vs都会有。在安装文件夹里面能够找到。
3、用vs的命令行工具cd到luajit的src文件夹
4、运行msvcbuild.bat批处理文件,编译出luajit.exe

编译完毕之后,会在src文件夹下生成一系列文件,当中有一个luajit.exe

接下来就能够使用luajit.exe编译lua脚本的bytecode了:luajit -b [脚本名] [编译后的脚本名],运行完后会在src文件夹下生成一个已经编译成bytecode的jit.lua文件


以下把编译之后的jit.lua放在2dx中试一下。以HelloLuaproject为基础,把jit.lua放到\samples\Lua\HelloLua\Resources下,改动AppDelegate.cpp中的lua调用为std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");
执行结果为:

至此。luajit编译bytecode加密已完毕!
严重关注:斯沃琪,我编译脚本名称是不一样的前后服用后。为了让大家看到了差距,当在项目中的实际使用,脚本编写的最佳一致之前的名称。否则,彼此脚本require时间可能出现故障!
Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密的更多相关文章
- Cocos2d-x使用Luajit将Lua脚本编译为bytecode,从而实现加密
转自:http://www.58player.com/blog-2537-87218.html 项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(b ...
- Cocos2d-x使用Luajit将Lua脚本编译为bytecode,实现加密 更新
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行. 以下是使用原生的lua解释器编译字节码: 1 ...
- SystemTap----将SystemTap脚本编译成内核模块
当运行SystemTap脚本时,会根据脚本生成一个内核模块,然后插入到系统中执行后退出.这个过程总共分为5个阶段:parse, elaborate, translate, compile, run ...
- 把perl脚本编译成exe
来源:http://www.veryhuo.com/a/view/38338.html 今天想把 perl 脚本编译成 exe 以便脱离 perl 解释器独立运行.都可以生成PERL的PE文件,在PE ...
- python 脚本编译成可执行二进制(exe)
本文python3,pyinstaller也支持py2 cmd下载模块pyinstaller 首先: pip install pyinstaller 其次: cmd下进入需要编译的xxx.py文件目录 ...
- 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)
一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...
- 通过luac编译lua脚本
在lua官网下载一个lua的release包,里面有已经编译好的lua启动文件(包括lua.exe),其中还有luac.exe, 这个程序是用来将lua文件编译成二进制码, 使用方法很简单,在控制台调 ...
- Windows下为Lua脚本进行加密处理
缘由 想对Lua脚本进行安全性处理,可惜一直没有想到很好的解决方案,考虑过用原生Lua将脚本编译成二进制代码,也考虑过用zlib将文件进行加密压缩处理,但是感觉都不是最佳方案,今天忽然想到有个东西叫L ...
- Lua脚本在Redis事务中的应用实践
使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.事务中的命令要么全部 ...
随机推荐
- hihoCoder #1174:拓扑排序·一
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 因为今天上课的老师讲的特别无聊.小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi ...
- python学习笔记之一:列表与元组
最近在看<python基础教程>(基于python2.x),下面总结一下第二章列表与元组的知识: 在这章中引入了数据结构的概念.数据结构是通过某种方式组织在一起的数据元素的集合.在pyth ...
- Class Diagram
- linux上安装Drupal
linux上安装Drupal 前言:国内用drupal的并不太多,网上资料也很少.要注意的是drupal尽量别使用apt来安装,特别是ubuntu平台的drupal做出了一定的更改,会妨碍后期的学习和 ...
- Unreal Engine 4 创建Destructible Mesh(可破坏网格)
Unreal Engine 4的物理引擎用的是PhysX. 支持网格破坏.布料.物理粒子等,非常强大.曾经须要编码才干完毕的工作,在Unreal Engine 4 中仅仅须要拖拖拽拽就完毕了,非常方便 ...
- 【Leetcode】Pascal's Triangle II
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3 ...
- CentOS 安装apache 及所需的 apr,apr-util,pcre
安装apache前确定已安装 apr,apr-util,pcre 一.安装apr [root@xt test]# tar -zxf apr-1.4.5.tar.gz [root@xt test]# c ...
- 【原创】leetCodeOj ---Partition List 解题报告
原题地址: https://oj.leetcode.com/problems/partition-list/ 题目内容: Given a linked list and a value x, part ...
- sizeClass和autolayout学习资源整理
sizeClass和autolayout,看来不得不開始放弃frame的写法,收集点资料集中学习下 Adaptivity User Interfaces苹果官方文档:https://developer ...
- DV工作流