Чтобы сделать исполняемый файл из скрипта, используйте утилиту 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;
}