使用LuaInterafce与Mono,Ubuntu时出错

时间:2013-12-18 18:48:13

标签: ubuntu mono lua

我在Mono,Ubuntu上使用LuaInterface时遇到了一些问题。我已按照说明here,但当我尝试在Mono中编译和运行程序时,出现以下错误:

程序:

using System;
using LuaInterface;

public class TestLua {

public static void Main(string[] args) {
    Lua lua= new Lua();  // will open all the standard Lua libraries
}

}

错误:

Unhandled Exception: System.DllNotFoundException: luanet.so
  at (wrapper managed-to-native) LuaInterface.LuaDLL:lua_pushstdcallcfunction     (intptr,LuaInterface.LuaCSFunction)
  at LuaInterface.ObjectTranslator.createBaseClassMetatable (IntPtr luaState) [0x00000] in <filename unknown>:0 
  at LuaInterface.ObjectTranslator..ctor (LuaInterface.Lua interpreter, IntPtr luaState) [0x00000] in <filename unknown>:0 
  at LuaInterface.Lua..ctor () [0x00000] in <filename unknown>:0 
  at TestLua.Main (System.String[] args) [0x00000] in /home/zbynek/Plocha/csharp/Game/Lua/LuaProject/Program.cs:7 
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: luanet.so
  at (wrapper managed-to-native) LuaInterface.LuaDLL:lua_pushstdcallcfunction (intptr,LuaInterface.LuaCSFunction)
  at LuaInterface.ObjectTranslator.createBaseClassMetatable (IntPtr luaState) [0x00000] in <filename unknown>:0 
  at LuaInterface.ObjectTranslator..ctor (LuaInterface.Lua interpreter, IntPtr luaState) [0x00000] in <filename unknown>:0 
  at LuaInterface.Lua..ctor () [0x00000] in <filename unknown>:0 
  at TestLua.Main (System.String[] args) [0x00000] in /home/zbynek/Plocha/csharp/Game/Lua/LuaProject/Program.cs:7 

这是一个奇怪的错误。我能理解,如果.dll文件无法找到,但是.so?

有没有人有想法,如何解决这个问题?

由于 兹比涅克

1 个答案:

答案 0 :(得分:0)

与此相关:

  

必须使用对LuaInterface.dll的引用进行编译,两者都是   必须可以在库路径上访问luanet.so和liblua5.1.so。

找到LuaInterface以便您获得引用,但很可能LIB_PATH中的所有项都不是包含luanet.so的文件夹。

您可以尝试在.cs中打印LD_LIB_PATH(使用LuaInterface注释掉)以检查它是否已设置:

using System;

...

String libPath = Environment.GetEnvironmentVariable("LD_LIBRARY_PATH");
Console.WriteLine("LD_LIBRARY_PATH:   " + libPath);

确保.so上的权限是正确的(例如,如果它们是root用户,并且您是普通用户,则可能无法加载)。

确保找到的LuaInterface.dll是$ LUAI中的那个而不是其他的。

另见Mono shared library under linux location