当我尝试在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兼容?
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.
旧版本的LuaInterface使用纯P/Invoke包装器.你可以用它.
还有一些尝试替代方案,包括我自己.http://github.com/jsimmons/LuaSharp