当前位置:  开发笔记 > 编程语言 > 正文

创建独立的Lua可执行文件

如何解决《创建独立的Lua可执行文件》经验,为你挑选了3个好方法。

有没有一种简单的方法从Lua脚本创建独立的.exe文件?基本上这将涉及链接Lua解释器和脚本.

我相信它是可能的(PLT Scheme允许以相同的方式创建独立的可执行文件),但究竟如何呢?



1> Edwin Jarvis..:

检查srlua.它做你需要的.

它来自Lua的一位作者.在这个地址上还有预编译的Windows二进制文件,所以我认为这对你来说会更容易.



2> 小智..:

要从脚本生成可执行文件,请使用bin2c实用程序:

luac script.lua -o script.luac
bin2c script.luac > code.c

然后在文本编辑器文件main.c中创建并使用您喜欢的编译器编译/链接它.而已.(注意 - 可执行文件也支持命令行参数)

MSVC示例:

cl /I "./" /I "$(LUA_DIR)\include" /D "_CRT_SECURE_NO_DEPRECATE" /D "_MBCS" /GF /FD /EHsc /MD /Gy /TC /c main.c
ld /SUBSYSTEM:CONSOLE /RELEASE /ENTRY:"mainCRTStartup" /MACHINE:X86 /MANIFEST $(LUA_DIR)\lib\lua5.1.lib main.obj /out:script.exe
mt -manifest $script.manifest -outputresource:script.exe;1

使用/ SUBSYSTEM:WINDOWS用于GUI可执行文件.所有这一切都不容易,只有第一次,您可以创建批处理文件,以便一旦您成功尝试它自动化过程.

main.c中:

#include 
#include 
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

int main(int argc, char *argv[]) {
  int i;
  lua_State *L = luaL_newstate();
  luaL_openlibs(L);
  lua_newtable(L);
  for (i = 0; i < argc; i++) {
    lua_pushnumber(L, i);
    lua_pushstring(L, argv[i]);
    lua_rawset(L, -3);
  }
  lua_setglobal(L, "arg");
#include "code.c"
  lua_close(L);
  return 0;
}


请注意,bin2c随Lua 5.1一起被删除,因此您需要另一种方法来打包字节码并将其放在Lua堆栈上.请参阅http://lua-users.org/wiki/BinToCee以在Lua中重新实现.

3> Ignacio..:

除了上述建议,您还可以看看L-Bia.

它可以生成独立的可执行文件,包括lua脚本和所需的动态库.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有