由于我的游戏真的很想成为Mono-usable,但由于LuaInterface真是个混蛋(因此请参阅the relevant SO thread),它似乎无法在Linux上运行,所以我决定按照建议的方法进行操作。我编写了自己的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,就不应该这样做,对吗?奇怪的是,放回lua51.dll的混乱的.Net版本会产生EntryPointNotFoundException。头脑陷入困境。
那怎么了?
相关源代码:Lua511.cs,将其放在LuaInterface项目中,然后删除了引用,因此将其替换。
编辑:拧这个,我要寻找替代品。还是自己滚。或者只是停止关心Linux兼容性。
最佳答案
您引用了my question。我采用另一种方法来解决该问题,并开始开发新的Lua .NET接口。我称它为Lua4Net。
您可以找到sources on Google hosting。还有here the unit tests。
当前实现的功能:执行带有异常处理的代码并提供返回值;用参数处理注册全局函数。
后续功能:获取/设置全局变量;调试支持,...
您可以找到使用的native windows DLL here(它是here中重命名的VC ++ 9.0 DLL)。
AND:今天我运行了我的第一个Linux / Mono测试,并且我所有的单元测试都工作了!!!