2010-09-16 11 views
8

Spero davvero che ci sia un po 'di aiuto su questo argomento. Qualcuno ha mai usato lua in un'applicazione che ha bisogno del supporto sia a 32 che a 64 bit? Attualmente stiamo passando a 64-bit ma stiamo avendo problemi con gli script lua compilati dal cliente che non possiamo ricompilare noi stessi usando la versione a 64-bit. Quindi, in effetti, dobbiamo essere in grado di caricare file bytecode compilati usando lua a 32 bit in un'applicazione a 64 bit. Quando cerchiamo di fare in modo che riceviamo un messaggio di errore:lua problema di transizione a 64 bit

virtuale non corrispondente macchina in test.bin.lua: dimensione del size_t è 8, ma leggiamo 4

Beh, certo questo è un chiaro problema 64bit transizione. La cosa difficile è solo capire cosa fare al riguardo senza la possibilità di ricompilare i binari.

Grazie

+1

nota che il caricamento di bytecode è sconsigliato. più sicuro e più portatile è quello di caricare il codice sorgente. – Javier

risposta

3

Non è difficile adattare lundump.c alla lettura di file bytecode a 32 bit. Ho inserito una tabella di marcia per questo nella mailing list Lua. Se hai problemi, ti prego di inviarmi una email.

+0

Sono interessato a questo argomento. Hai un post sulla tua mailing list? – Andreas

+0

@Andreas, probabilmente questo: http://lua-users.org/lists/lua-l/2006-06/msg00205.html – lhf

+0

Grazie. In realtà era davvero banale dato che dovevo modificare 'lundump.c' per poter gestire dimensioni' size_t' di 4 byte * e * 8 byte. Dopo questa modifica le versioni a 32 bit del mio programma sono ora magicamente in grado di eseguire il bytecode prodotto dalla versione a 64 bit e viceversa. Ovviamente non funzionerà su 32-bit se c'è davvero una stringa con più di 2^32 byte di dati ma è piuttosto improbabile che io indovino :) Un'altra cosa che dovevo cambiare era il typedef 'Instruction' di' unsigned long 'a' unsigned int' perché le istruzioni dovrebbero essere a 32 bit. Nota che sono ancora su Lua 5.0.2. – Andreas

Problemi correlati