如何在Mono/Linux上使用LuaInterface

ulr*_*chb 5 .net c# mono lua luainterface

当我尝试在Linux上使用Mono上的LuaInterface时(在Ubuntu 9.04上使用Mono 2.0),我得到以下异常:

** (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.

根据这个网站, LuaInterface 可以与Mono一起使用.现代艺术博物馆也说.

是否可以重新编译lua51.dll以使其与Mono兼容?

Mik*_*son 6

LuaInterface看起来是纯C#,但它使用混合模式 C++/CLI-ifed版本的本机Lua库的Windows版本,它混合.NEt代码和本机32位Windows代码.除了Windows之外的平台没有C++/CLI编译器,因此您无法移植/重新编译C++/CLI代码,尽管它应该适用于Win32(或者可能是Wine)上的Mono.

让它在Mono上运行的唯一真正可行的方法是使用P/Invokes而不是C++/CLI.然后,您可以使用dllmap,以便当Mono尝试解析对lua51.dll的P/Invoke调用时,会将其重定向到Linux等效项liblua.so.5.1.


jsi*_*ons 6

旧版本的LuaInterface使用纯P/Invoke包装器.你可以用它.

还有一些尝试替代方案,包括我自己.http://github.com/jsimmons/LuaSharp