在Windows 上 Build LuaJit32 和 LuaJit64

1、Build环境

Windows 10
Visual Studio 2017


2、Build需求

1、首先我们需要Luajit的源代码 [前往下载](http://luajit.org/download.html)
2、Window只需要下载.Zip后缀的压缩包即可,红框表示稳定版,绿框为开发测试版自行取舍,笔者选的beta3的

在这里插入图片描述


3、Build工具


如上图

  1. x64 Native Tools Command Prompt for VS 2017 用于构建 64位的Luajit.exe
  2. x86 Native Tools Command Prompt for VS 2017 用于构建 32位的Luajit.exe

4、Build 过程

1、我们先build 32位的Luajit.exe 
2、解压我们下载的Luajit的压缩包,得到一个源码文件夹,
如下图

在这里插入图片描述
3、打开x86 Native Tools Command Prompt for VS 2017 并引导到源码文件夹的src文件夹下
在这里插入图片描述

4、输入"msvcbuild"并运行, 因为src文件夹下有一个msvcbuild.bat 
   我们要通过它生产对应的Luajit.exe和其他文件

在这里插入图片描述

5、运行之后,工具就会开始自动生产32位的Luajit.exe 及其相关文件,结束后看到如下信息
   我们可以看到工具提示 x86的Luajit已经构建成功了,此时 在msvcbuild.bat的同一目录下
   会生成两个我们需要的文件,分别是 "Luajit.exe"和"lua51.dll"

在这里插入图片描述
在这里插入图片描述

6、接下来才是关键操作,新建一个空的文件夹取名"Luajit32"(您随意),
   然后将构建成功的"Luajit.exe"和"lua51.dll" 拷贝到新建的文件夹

在这里插入图片描述

7、然后新建一个名为 "lua"的空子文件夹(这个名字就不能乱取了,必须叫"lua")

在这里插入图片描述

8、回到"msvcbuild.bat"文件的目录(即 src),将jit文件夹整个拷贝到新建的lua空文件夹下

在这里插入图片描述
在这里插入图片描述

9、好了,现在我们已经完成x86的 Luajit.exe 工具的构建了
   x64的构建 跟x86的构建是一样的,只需要运行
   "x64 Native Tools Command Prompt for VS 2017"
   有如下图提示即可成功生成新的x64  Luajit.exe 和 lua51.dll  然后做新建文件夹的操作
10、注意: x86和x64都是用的同一个jit文件夹下的文件,直接拷贝过去即可

在这里插入图片描述

11、两个版本的Luajit.exe生成完之后的样子如下图

在这里插入图片描述
在这里插入图片描述

12、最后我们来测试下工具的可用性,以x86的Luajit.exe为例

在这里插入图片描述

-b表示我们希望这个工具将lua代码转换成字节码模式,前面是lua文件所在路径,后面则是输出路径

在这里插入图片描述
在这里插入图片描述

如上,我们可以看到可视化的lua代码已经被转换成字节码了

5、总结

1、Luajit的优势: U3D手游开发中用LUA做脚本有相当大的优势,例如热更新,代码使用及其简单和方便,
   但是lua脚本又不跟C#代码一样会被打包到Dll文件里面,而是被作为游戏APP中的一种“资源”来使用,
   这就带来一个问题,如果别人把资源破解了,你的lua代码文件就会赤裸裸的呈现在别人面前
   
   所以我们要对代码进行一定程度上的处理,通过 Luajit进行  转成字节码,可以实现相当于代码加密
   的效果。至少可以防止小白使用常规工具暴力的将代码反编译出来.
2、Luajit 的构建不仅仅局限于Windows上,你也可以在MAC上构建,由于笔者能力有限,其他平台的没有测试过,但是思路都是一样的。 
3、32位的Luajit.exe 会将lua代码转换成32byte机器使用的 32位bytes文件,64位的同理,
   因此在手游开发中, 由于移动平台的特殊性(如IOS有32和64,Android 32位),
   为了更好的兼容,我们最好是将lua打包成32位和64位,并将两者同时打入资源包中,
   或者上传至资源服务器,当对应设备的APP拉取资源时,通过APP代码判断当前设备是x86还是x64
   从而拉取对应的bytes文件,如果我们只是将32位的luabytes文件打入资源或上传资源服时,
   此时x64的IOS设备若拉取并使用这些代码则会造成莫名其妙的错误,甚至游戏卡死闪退(没有做过多的测试)

笔者能力有限,若有描述错误之处,望诸位大侠不吝赐教。
感谢!

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值