在不使用它们的情况下注册函数“对象引用未设置为对象的实例”。

我有一个用 C# 编写的 IRC 机器人,目前想要使用 Lua 脚本。在机器人启动时,我想要注册函数,并检测是否有新文件添加,然后加载它。我已经做了新文件/重新加载脚本的功能,但当我运行时,我在一个想让用户使用的自定义函数上得到了“ 对象引用未设置为对象的实例 ”的错误。

这是目前的代码:

public Lua lua;
public void RegisterFunctions() {
    lua.RegisterFunction("print", this, typeof(DashLua).GetMethod("ConsoleOut"));
}
#region Custom Functions for Lua
public void ConsoleOut(String line) {
    if (line == null) {
        Console.WriteLine("Script error: print() can't be null.");
    } else {
        Console.WriteLine(line);
    }
}

在机器人的 Main() 中,我目前只有两行代码:

    DashLua dash = new DashLua();
    dash.RegisterFunctions();
点赞
用户2433877
用户2433877

NLua(NuGet)只在x64版本上运行,这就是为什么这些代码实际上都无法工作的原因。因此,如果您正在构建一个项目并且真的需要Lua作为脚本语言,您需要在项目属性中将构建更改为x64。话虽如此,您可以在他们的网站上获取Win32版本,这很遗憾它没有在NuGet上。

编辑:当您下载Win32版本时,它是空的。我想他们还没有构建,他们鼓励您自己构建。

2014-09-21 13:52:40