2014-09-20 16 views
0

我在C#中有一個IRC Bot,我現在想使用Lua腳本。在bot啓動時,我想註冊函數,並檢測是否添加了新文件,然後加載它。我已經做了新的文件/重載腳本功能,但是當我點擊運行時,我得到「對象引用未設置爲對象的實例。」我希望用戶能夠使用自定義功能。註冊不使用它們的函數「未將對象引用設置爲對象的實例。」

下面是當前的代碼:

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()機器人的我目前僅有2行:

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

你正在初始化'lua'字段嗎?這將有助於瞭解是否拋出異常。 – 2014-09-20 21:10:37

+0

必須使用'public Lua lua;'而不是'public Lua lua = new Lua();'來初始化該字段。由於我已經在「Lua.cs」文件中初始化了它,並且我將DashLua類調用到了我的主類中,所以目前沒有必要在Main()void中初始化它。 – 2014-09-20 21:15:21

+0

另一種方法來說,如果我做這樣的事情:'public void RegisterFunctions(){lua = new Lua(); (「Print」,typeof(Console).GetMethod(「WriteLine」,new Type [] {typeof(String)}));}'我會得到這個錯誤:**其他信息:嘗試加載格式不正確的程序。 (來自HRESULT的異常:0x8007000B)** – 2014-09-21 13:46:19

回答

0

NLua(的NuGet)只適用於64位構建這就是爲什麼這實際上沒有任何工作。所以如果你正在構建一個項目,並且真的需要一個Lua作爲腳本語言,你需要在Project的屬性中將你的構建改爲x64。這就是說,你可以在他們的網站上獲得Win32版本,這是一個恥辱,它不是nuget。

編輯:當你去下載Win32構建時,它是空的。我想他們還沒有建立它,並鼓勵你自己建立它。

+0

NLua.Win32構建已修復,您現在可以抓取.zip。我正在1.3.1版本上工作,我會盡快更新NuGet包。 – 2014-09-23 19:32:27

+0

感謝您的提示!我很感激! – 2014-09-23 19:37:11

相關問題