有没有一种简单的方法从Lua脚本创建独立的.exe文件?基本上这将涉及链接Lua解释器和脚本.
我相信它是可能的(PLT Scheme允许以相同的方式创建独立的可执行文件),但究竟如何呢?
检查srlua.它做你需要的.
它来自Lua的一位作者.在这个地址上还有预编译的Windows二进制文件,所以我认为这对你来说会更容易.
要从脚本生成可执行文件,请使用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; }
除了上述建议,您还可以看看L-Bia.
它可以生成独立的可执行文件,包括lua脚本和所需的动态库.