2010-09-16 11 views
8

Espero realmente que haya alguna ayuda para abordar este tema. ¿Alguien ha usado alguna vez lua en una aplicación que necesita soporte tanto de 32 bits como de 64 bits? Actualmente estamos en transición a 64 bits, pero estamos teniendo problemas con los scripts compilados de lua del cliente que no podemos recompilar utilizando la versión de 64 bits. Entonces, en efecto, necesitamos poder cargar archivos de códigos de bytes compilados usando lua de 32 bits en una aplicación de 64 bits. Cuando tratamos de hacerlo recibimos un mensaje de error:lua Problema de transición de 64 bits

desajuste máquina virtual en test.bin.lua: tamaño de size_t es 8, pero leemos 4

Bueno, por supuesto, este es un problema de 64 bits transición clara. Lo difícil es solo descubrir qué hacer al respecto sin la posibilidad de recompilar los binarios.

Gracias

+1

tenga en cuenta que no se recomienda cargar bytecode. Más seguro y más portátil es cargar el código fuente. – Javier

Respuesta

3

No es difícil adaptar lundump.c para leer archivos de códigos de bytes de 32 bits. He publicado una hoja de ruta para esto en la lista de correo de Lua. Si tiene problemas, por favor envíeme un correo electrónico.

+0

Me interesa este tema. ¿Tienes una para tu publicación de la lista de correo? – Andreas

+0

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

+0

Gracias. En realidad, fue realmente trivial ya que solo tuve que modificar 'lundump.c' para poder tratar con tamaños' size_t' de 4 bytes * y * 8 bytes. Después de esta modificación, las versiones de 32 bits de mi programa ahora son mágicamente capaces de ejecutar bytecode producido por la versión de 64 bits y viceversa. Por supuesto que no funcionará en 32 bits si realmente hay una cadena con más de 2^32 bytes de datos, pero eso es bastante improbable, supongo :) Otra cosa que tuve que cambiar fue la 'Instruction' typedef from' unsigned long 'to' unsigned int' porque las instrucciones deben ser de 32 bits. Tenga en cuenta que todavía estoy en Lua 5.0.2. – Andreas

Cuestiones relacionadas