在Windows 上 Build LuaJit32 和 LuaJit64

from–https://blog.csdn.net/u013700908/article/details/86366443

1、Build环境
Windows 10
Visual Studio 2017

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

3、Build工具

如上图

x64 Native Tools Command Prompt for VS 2017 用于构建 64位的Luajit.exe
x86 Native Tools Command Prompt for VS 2017 用于构建 32位的Luajit.exe
4、Build 过程
1、我们先build 32位的Luajit.exe
2、解压我们下载的Luajit的压缩包,得到一个源码文件夹,
如下图
1
2
3

3、打开x86 Native Tools Command Prompt for VS 2017 并引导到源码文件夹的src文件夹下

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

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

 

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

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

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

 

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

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

 

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

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

 

如上,我们可以看到可视化的lua代码已经被转换成字节码了
1
5、总结
1、Luajit的优势: U3D手游开发中用LUA做脚本有相当大的优势,例如热更新,代码使用及其简单和方便,
但是lua脚本又不跟C#代码一样会被打包到Dll文件里面,而是被作为游戏APP中的一种“资源”来使用,
这就带来一个问题,如果别人把资源破解了,你的lua代码文件就会赤裸裸的呈现在别人面前

所以我们要对代码进行一定程度上的处理,通过 Luajit进行 转成字节码,可以实现相当于代码加密
的效果。至少可以防止小白使用常规工具暴力的将代码反编译出来.
1
2
3
4
5
6
2、Luajit 的构建不仅仅局限于Windows上,你也可以在MAC上构建,由于笔者能力有限,其他平台的没有测试过,但是思路都是一样的。
1
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设备若拉取并使用这些代码则会造成莫名其妙的错误,甚至游戏卡死闪退(没有做过多的测试)

上一篇
下一篇