C# 注册函数而不使用它们“对象引用未设置为对象的实例”

C# 注册函数而不使用它们“对象引用未设置为对象的实例”,c#,luainterface,nlua,C#,Luainterface,Nlua,我有一个C语言的IRC机器人,现在我想使用Lua脚本。在bot启动时,我想注册函数,并检测是否添加了新文件,然后加载它。我已经完成了新文件/重新加载脚本功能,但是当我点击run时,我得到的对象引用没有设置为对象的实例。在自定义函数上,我希望用户能够使用 以下是当前代码: public Lua lua; public void RegisterFunctions() { lua.RegisterFunction("print", this, typeof(DashLua).GetMetho

我有一个C语言的IRC机器人,现在我想使用Lua脚本。在bot启动时,我想注册函数,并检测是否添加了新文件,然后加载它。我已经完成了新文件/重新加载脚本功能,但是当我点击run时,我得到的对象引用没有设置为对象的实例。在自定义函数上,我希望用户能够使用

以下是当前代码:

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);
    }
}
在bot的主要部分,我目前只有两条线路:

    DashLua dash = new DashLua();
    dash.RegisterFunctions();

NLua NuGet只在x64版本上工作,这就是为什么所有这些都不起作用的原因。因此,如果您正在构建一个项目,并且确实需要Lua作为脚本语言,那么您需要在项目的属性中将构建更改为x64。也就是说,你可以在他们的网站上获得Win32版本,可惜它不在nuget上


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

您正在初始化lua字段吗?这将有助于了解是否正在抛出异常;代替公共Lua Lua=新Lua;以初始化该字段。由于我已经在Lua.cs文件中对其进行了初始化,并且我正在将DashLua类调用到我的主类中,因此目前没有必要在主void中对其进行初始化{typeofString};}我将收到以下错误:其他信息:试图加载格式不正确的程序。HRESULT中的异常:0x8007000BNLua.Win32 build已修复,您现在可以获取.zip。我正在处理1.3.1版本,我将尽快更新NuGet包。感谢您的提示!我非常感谢!