由于我的游戏,我真的很想成为 Mono 可用的,但似乎无法在 Linux 下运行,因为 LuaInterface 是个混蛋(有关更多信息,请参阅相关的 SO 线程),我决定按照建议做那里。我编写了自己的 Lua511.LuaDLL 类来反映 LuaInterface 使用的类,用来自 lua51 的相应 DllImport 替换每个公共函数:
//For example, like this:
[DllImport("lua51")]
public static extern IntPtr luaL_newstate();
使用编辑过的 LuaInterface.dll(现在托管自己的 Lua511.LuaDLL)和游戏启动文件夹中的纯原生 Win32 lua51.dll,当 LuaInterface 尝试初始化时,我以某种方式得到了 DllNotFoundException:
public Lua()
{
luaState = LuaDLL.luaL_newstate(); //right there, right then.
...
当然,有了 DLL,它不应该那样做,对吧?奇怪的是,放回混乱的 .Net 版本的 lua51.dll 反而会给出一个 EntryPointNotFoundException。头脑一片混乱。
那是怎么回事?
相关源代码:Lua511.cs,将其放在 LuaInterface 项目中,然后删除引用以便将其替换。
编辑:搞砸了,我要寻找替代品。或滚动我自己的。或者干脆停止关心 Linux 兼容性。