我在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?
有没有人有想法,如何解决这个问题?
由于 兹比涅克
答案 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中的那个而不是其他的。