近來想測試伺服器增加熱更新能力,考慮加入lua熱更新。
目前鵝廠的xlua也是基於nlua的早期版本開發的,黑歷史可以參考(
nlua官網(
nlua的前身是luainte***ce,2.0.3版後改名為nlua
luainte***ce只具有簡單的函式註冊和變數值傳遞的功能,確實看上去像乙個簡單的inte***ce
nlua後,作者做了一些改進,支援了c#物件不需要註冊在lua裡使用,呼叫成員等等(不需要乙個個註冊,但需要匯入namespace,nlua會通過反射進行物件掃瞄)。
建立c#工程,必須.net4.5以上。
編譯後,可以看到,對c++的dll,分別維護了64位和32位的版本。
傳值呼叫
lua["vint"] = 20;
lua["vstr"] = "from c#";
lua.dostring("vint = vint+1");//執行lua指令碼**
// 註冊clr物件方法到lua,供lua呼叫
lua.registerfunction("testprint", obj, obj.gettype().getmethod("testprint"));
// 註冊clr靜態方法到lua,供lua呼叫
lua.registerfunction("teststaticprint", null, typeof(testclass).getmethod("teststaticprint"));
lua.dostring("testprint(10)");
lua.dostring("teststaticprint()");
這裡分別註冊了成員函式和靜態函式到lua,lua呼叫順利完成。
這是nlua中引入的新特性,相對比較複雜一些
我們分別通過c#和lua建立了乙個c#中定義的型別的物件。然後呼叫各自的成員函式都成功了。
這裡的lua.loadclrpackage是為了自動匯入clr中的框架資料結構型別
而import操作,需要把(assembly, namespace)匯入到lua的命名空間。完成後lua就完成了對c#自定義型別的繫結了。
Git 基本使用配置
git config global user.name aaroncnhk git config global user.email aaroncnhk qq.com 2.文字編輯器 在需要輸入必要的文字資訊時呼叫,比如提交更新時忘了加注釋。一般情況會用系統預設的編輯器,比如vi vim。當然也可以...
使用Struts標籤的基本配置
使用struts標籤的基本配置 墨爾本晴 5.5.1 使用struts標籤之前需要經過下面3個步驟的配置。匯入tld檔案。在web.xml中註冊標籤庫。在頁面中引入標籤庫。下面詳細介紹以上步驟。匯入tld檔案。tld檔案是struts的標籤庫描述檔案,一般將其直接複製到應用工程的web inf目錄下...
Mybatis的基本配置和使用
resource config data.properties name com.etc.entity typealiases default development id development type jdbc type pooled name driver value name url va...