有沒有一種簡單的方法來從Lua腳本創建獨立的.exe文件?基本上這將涉及鏈接Lua解釋器和腳本。創建獨立的Lua可執行文件
我相信這是可能的(PLT Scheme允許以同樣的方式創建獨立的可執行文件),但是究竟是如何?
有沒有一種簡單的方法來從Lua腳本創建獨立的.exe文件?基本上這將涉及鏈接Lua解釋器和腳本。創建獨立的Lua可執行文件
我相信這是可能的(PLT Scheme允許以同樣的方式創建獨立的可執行文件),但是究竟是如何?
檢查出srlua。它可以滿足你的需求。
這是來自Lua的作者之一。在這個地址上還有預編譯的Windows二進制文件,因此對於我來說這將更容易。
既然你說'.exe'我假設你正在尋找一個Windows解決方案。一個想法是將腳本附加到預編譯器可執行文件。它可能會或可能不會在您的書中符合「簡單」的條件。
解釋器需要能夠讀取自身,解析其頭文件以確定常規.exe數據結束位置(即腳本開始的位置),然後將文件的其餘部分交給Lua。
其他解決方案不要求解釋爲努力工作,但確實需要更多地參與聯,而用這種方法,exeifying腳本可以簡單到
copy interpreter.exe+script.lua script.exe
這就是srlua所做的。 – lhf 2010-01-14 10:21:14
爲了從腳本使用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 <stdlib.h>
#include <stdio.h>
#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;
}
這一話題已經有點「永久」的興趣和可能的答案是在這個意義上,新的解決方案可能出現的(雖然舊的可能過時)「流體」,這裏的還有另一種可能性(對於Windows)和純粹的Lua源代碼依賴項。
注:除非有字節碼爲他人的平臺,生成的C代碼應該能夠編譯可以編譯股票的Lua源在任何平臺上,並創建獨立的差異你的Lua應用程序的本地二進制文件。
可悲的是,srlua沒有爲我工作。下面的解決方案與luac/bin2c工作 – Zane 2013-01-11 10:54:12
srlua在他們的github repo- https:// github分發二進制文件。com/LuaDist/srlua 這些工作對我來說很好 - `glue.exe srlua.exe my.lua my.exe` – noahp 2015-05-29 15:55:13