Pour faire un exécutable à partir de script utiliser l'utilitaire bin2c de cette façon :
luac script.lua -o script.luac
bin2c script.luac > code.c
Créez ensuite dans un éditeur de texte le fichier main.c et compilez-le/lienz-le avec votre compilateur préféré. C'est tout. (Note - l'exécutable supporte aussi les arguments de la ligne de commande)
Exemple avec 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
Utilisez /SUBSYSTEM:Windows pour l'exécutable GUI. Tout cela n'est pas facile juste pour la première fois, vous pouvez créer un fichier batch pour automatiser le processus une fois que vous l'avez essayé avec succès.
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;
}