2013-08-20 8 views
6

ciao Ho un programma Lua (scritto in Lua 5.1). Sono su Windows 7, cercando di convertirlo in un eseguibile. Nessuna fortuna finora. Ho letto altri post qui che suggerivano di usare srlua per fare questo, quindi l'ho scaricato, ma non ho idea di cosa fare dopo. Ho installato Cygwin perché ho capito che è necessario ma non so come usare srlua per convertire un file lua in un eseguibile. Qualsiasi aiuto sarà apprezzato.Windows Lua a eseguibile

+0

È possibile creare facilmente un file exe autonomo dal mazzo dei file lua.exe + lua.dll + script.lua + runme.bat utilizzando ThinApp. –

risposta

9

srlua è distribuito solo come sorgente, quindi è necessario compilarlo prima (vedere this answer per suggerimenti su come ottenere un compilatore C gratuito).

BTW, Cygwin non è affatto necessario. Il suddetto collegamento ti porterà alle istruzioni per installare TDM-GCC, una porta Windows del compilatore GCC che creerà file eseguibili che dipendono solo dalle librerie di sistema predefinite di Windows.

Una volta installato il compilatore C e compilato srlua, si avranno due file eseguibili glue.exe e srlua.exe. Quest'ultimo è solo uno stub, utilizzato da srlua.exe per generare l'eseguibile finale unendolo allo script Lua.

Supponendo che lo script è myscript.lua e si desidera creare un eseguibile chiamato myexe.exe è necessario richiamare glue.exe dalla linea di comando come segue:

glue.exe srlua.exe myscript.lua myexe.exe 

ho pensato che tutti i file rilevanti vengono inseriti nella stessa directory e sei passato a quella directory dalla riga di comando.

Addendum: Ho appena controllato la pagina di download ufficiale per srlua e ho visto che esiste anche un pacchetto con binari già compilati per Windows. Quindi puoi saltare tutta la compilation dalla parte sorgente e semplicemente scaricare e decomprimere this.

I file binari si trovano nella sottodirectory Release all'interno dell'archivio. Nota che questi sono solo per Lua 5.1, quindi se il tuo script usa le caratteristiche di Lua 5.2 devi seguire il mio consiglio iniziale e compilare dalla fonte.

+0

Grazie ha funzionato alla grande. Quello che non capisco però è questo: ho diverse funzioni nel mio file lua, quindi come faccio a specificare quale deve essere eseguito? In java o C abbiamo una funzione principale che viene eseguita ma che dire del file lua che contiene solo funzioni? – maxam

+2

Lo script viene eseguito dalla prima riga. Tecnicamente lo script stesso è il corpo di una funzione Lua, e quella funzione è ciò che viene eseguito dall'interprete quando si esegue lo script. In altre lingue potresti chiamarla funzione "anonima", ma in Lua sarebbe una terminologia fuorviante perché le funzioni tecnicamente non hanno un nome (solo le variabili hanno), dal momento che sono valori (di prima classe). Quello che vedi come nomi di funzioni sono in effetti variabili (locali, globali o campi di tabella) che hanno funzioni come valore. Nota che in Lua puoi definire nuove funzioni all'interno di altre funzioni. –