2009-10-07 12 views
5

Cuando intento utilizar LuaInterface en Mono en Linux (usando Mono 2.0 en Ubuntu 9.04) me sale el siguiente excepción:Cómo utilizar LuaInterface en Mono/Linux

 
** (App.exe:8599): WARNING **: Method ':.DoDllLanguageSupportValidation()' in assembly 
'/home/ulrich/test/Debug/lua51.dll' contains native code that cannot 
be executed by Mono on this platform. 
The assembly was probably created using C++/CLI. 

Según this web site LuaInterface puede ser usado con Mono. MoMA dice eso también.

¿Es posible volver a compilar lua51.dll para que sea compatible con Mono?

Respuesta

6

LuaInterface parece ser pura C#, pero utiliza un modo mixto versión C++/CLI-cado de la versión de Windows de la biblioteca Lua nativa, que mezcla el código .NET y código nativo de Windows de 32 bits. No hay compilador C++/CLI para plataformas que no sean Windows, por lo que no puede portar/recompilar el código C++/CLI, aunque debería funcionar en Mono en Win32 (o tal vez Wine) ...

La única forma realmente viable hacer que esto funcione en Mono sería hacer que use P/Invocaciones en lugar de C++/CLI. A continuación, puede usar un dllmap para que cuando Mono intente resolver las llamadas de P/Invoke a lua51.dll, se lo redireccione al equivalente de Linux, liblua.so.5.1.

+0

El problema es que lua51.dll no utiliza DLLImport(), pero compila el código Lua no administrado directamente en esta biblioteca administrada. – ulrichb

+0

Vaya, debería haber mirado el modo LuaInterface con cuidado. Editado para hacerlo correcto. –

+0

Esto no suena bien, porque http://luainterface.googlecode.com/svn/trunk/lua-5.1.2/lua511/LuaDLL.cpp parece hacer mucha "magia", ... Y, .... ¿POR QUÉ no hay un compilador mixto de C++/CLI? – ulrichb