亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#和lua相互調用的方法教程

2019-10-29 21:09:00
字體:
來源:轉載
供稿:網友

color: #ff0000">前言

自從ulua在官網上出來后,lua 就被u3d開發人員喜愛。國內有幾個高手把lua拿過來 接著進行了封裝。很多都是新手轉過來。lua語法一看遍知,但是大多數人還是不明白兩個語言之間的互相調用是怎么一回事,這也是難點和重點。所以今天想跟大家分享一下這方面的知識,讓大家少走彎路吧。

Lua是一種很好的擴展性語言,Lua解釋器被設計成一個很容易嵌入到宿主程序的庫。LuaInterface則用于實現Lua和CLR的混合編程。

C與lua交互面臨以下幾個問題:

1、由于lua里面的數據都是動態加載的所以內存也是動態分配的,也沒有static 這樣的修飾,而C里面有 static const 這樣的靜態類型數據

2、c里面是手動管理內存lua 里面是自動管理內存

所以為了解決這些問題就采用了一個抽象棧來讓lua與c交換值,好比c里面的 void*  可以指向任何地址而不用管存儲類型。這樣兩邊都不管你傳的何種類型的參數,只用知道它是一個地址指針。兩邊用的時候再強制轉換成對應的類型。

下面開始本文的正文吧。

(一)C#調用Lua

測試環境:在VS2015中建一個C#控制臺應用程序,并添加LuaInterface.dll的引用

LuaInterface下載地址:http://luaforge.net/projects/luainterface/(下載luainterface-1.5.3,這里面的資源比較多)

LuaInterface.Lua類是CLR訪問Lua解釋器的主要接口,一個LuaInterface.Lua類對象就代表了一個Lua解釋器(或Lua執行環境),Lua解釋器可以同時存在多個,并且它們之間是完全相互獨立的。

簡單說明下步驟:

lua,c#,相互調用,c,調用lua,調用lua函數

在根目錄處添加LuaInterface.dll的引用:

lua,c#,相互調用,c,調用lua,調用lua函數

  lua,c#,相互調用,c,調用lua,調用lua函數

  lua,c#,相互調用,c,調用lua,調用lua函數

不啰嗦、直接上代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using LuaInterface;namespace CSharpToLua{  class Program  {    static void Main(string[] args)    {      // 新建一個Lua解釋器,每一個Lua實例都相互獨立, 一個global全局域      Lua lua = new Lua();      //---------------------------------------------------      // Lua的索引操作[]可以創建、訪問、修改global域      lua["age"] = 20;      lua["name"] = "Mr.huang";      string luaCode = "print(/"This is Lua code/")";      lua.DoString(luaCode);//執行lua腳本代碼        lua.DoFile("F://CSharpToLua//CSharpToLua//ScriptsFromFile.lua");//執行lua腳本文件,這里我直接用了絕對定位      double age = (double)lua["age"];      Console.WriteLine("age = {0}", age);      Console.WriteLine("width = {0}", lua["width"]);      Console.ReadKey();    }  }}

可以跟著敲一遍,提高與代碼的親密度 ~.~ And then 點擊啟動

咦、這時會出現一個報錯、但是不要緊、

#2317c1e29524eb42a3a3efcd94f77a8c#

解決方案:

  lua,c#,相互調用,c,調用lua,調用lua函數

再次運行、就可以看到結果啦、驚不驚喜、意不意外

lua,c#,相互調用,c,調用lua,調用lua函數

簡單的介紹C#如何調用Lua代碼、當然、還有很多豐富的API小伙伴們可以自行查閱喲。

(二)Lua調用C#

直接上代碼 ~.~

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using LuaInterface;namespace CSharpToLua{  class Program  {    static void Main(string[] args)    {      // 新建一個Lua解釋器,每一個Lua實例都相互獨立, 一個global全局域      Lua lua = new Lua();      //---------------------------------------------------lua調用c#函數      TestClass obj = new TestClass();      // 注冊CLR對象方法到Lua,供Lua調用  typeof(TestClass).GetMethod("TestPrint")      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()");      Console.ReadKey();    }  }  class TestClass  {    private int value = 0;    public void TestPrint(int num)    {      value = num;      Console.WriteLine("CSharp"+value);    }    public static void TestStaticPrint()    {      Console.WriteLine("TestStaticPrint");    }  }}

點擊運行.................

  lua,c#,相互調用,c,調用lua,調用lua函數

perfect~.~ 當然、這里只是簡單的介紹C#與Lua是如何相互調用的、小伙伴可自行Google大量豐富的API方便開發喲

重要的事要說三遍:LuaInterface是主要接口、LuaInterface是主要接口、LuaInterface是主要接口

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚州欧美日韩中文视频| 亚洲无线码在线一区观看| 亚洲天堂第一页| 欧美日韩中文字幕在线视频| 不卡av在线网站| 国产一区二区三区中文| 精品国偷自产在线视频| 韩国三级日本三级少妇99| 欧洲s码亚洲m码精品一区| 欧美成人免费全部观看天天性色| 欧美日韩在线视频观看| 亚洲影院色无极综合| 日韩专区在线观看| 最近日韩中文字幕中文| 中文字幕久热精品在线视频| 欧美成人亚洲成人| 在线电影欧美日韩一区二区私密| 亚洲美女黄色片| 国产成人综合久久| 国产精品欧美亚洲777777| 久久免费视频在线观看| 91情侣偷在线精品国产| 欧美香蕉大胸在线视频观看| 亚洲精品网址在线观看| 亚洲精品日韩丝袜精品| 国产精品一区久久久| 亚洲欧洲免费视频| 欧美性生交xxxxxdddd| 欧美另类高清videos| 久久视频在线播放| 欧亚精品中文字幕| 国内精品久久影院| 大桥未久av一区二区三区| 国产精品亚洲精品| 国产女人18毛片水18精品| 国产精品一久久香蕉国产线看观看| 国产精品视频区| 国产精国产精品| 91禁外国网站| 久久国产精品视频| 国产成人精品久久久| 国产精品爽爽爽| 久久在线免费观看视频| 日韩国产精品亚洲а∨天堂免| 伊人久久男人天堂| 亚洲国产小视频| 国产主播欧美精品| 欧美日韩福利电影| 欧美激情在线观看| 91精品久久久久久久久久入口| 欧美精品福利视频| 日韩在线中文字幕| 中文字幕亚洲天堂| 国产精品色午夜在线观看| 亚洲欧美日韩精品| 成人在线中文字幕| 久久综合久久88| 亚洲高清久久久久久| 亚洲国产成人在线播放| 8090理伦午夜在线电影| 91av在线不卡| 欧洲午夜精品久久久| 亚洲国产日韩欧美在线动漫| 奇米一区二区三区四区久久| 国产精品爱啪在线线免费观看| 亚洲网站在线观看| 欧美自拍视频在线| 91久久夜色精品国产网站| 国产精品美女免费看| 色婷婷av一区二区三区在线观看| 日韩欧美中文字幕在线播放| 亚洲欧美变态国产另类| 亚洲成成品网站| 国产精品一区二区三区毛片淫片| 欧美在线视频观看免费网站| 国内精品免费午夜毛片| 久久精品国产v日韩v亚洲| 九九视频这里只有精品| 亚洲91精品在线观看| 亚洲国产成人av在线| 国产精品视频大全| 久久久天堂国产精品女人| 欧美性猛交xxxx免费看| 色多多国产成人永久免费网站| 丝袜亚洲另类欧美重口| 亚洲福利视频专区| 一区二区三区日韩在线| 91精品91久久久久久| 夜夜躁日日躁狠狠久久88av| 国产丝袜一区二区三区免费视频| 国产精品高精视频免费| 伦伦影院午夜日韩欧美限制| 91精品久久久久久久久| 欧美性猛交xxxx黑人猛交| 456国产精品| 日韩中文av在线| 欧美精品18videosex性欧美| 久久精品中文字幕| 亚洲国产美女久久久久| 亚洲第一在线视频| 最新中文字幕亚洲| 欧美福利视频网站| 欧美日韩一区二区免费在线观看| 亚洲国产婷婷香蕉久久久久久| 热久久免费视频精品| 国产精品视频大全| 国产成人精品一区二区三区| 亚洲男人天堂网站| 成人h视频在线观看播放| 欧美激情在线观看视频| 国产精品尤物福利片在线观看| 亚洲欧美999| 亚洲天堂av综合网| 欧美高清视频在线观看| 国产亚洲欧美日韩美女| 最新国产成人av网站网址麻豆| 久久高清视频免费| 97超碰蝌蚪网人人做人人爽| 两个人的视频www国产精品| 中文字幕亚洲无线码在线一区| 国产一区二区三区视频免费| 国内偷自视频区视频综合| 久久精品电影网| 91国自产精品中文字幕亚洲| 日韩av在线一区二区| 九九精品在线视频| 亚洲精品日韩久久久| 亚洲欧美三级伦理| 日韩精品在线免费观看视频| 精品露脸国产偷人在视频| 中文字幕精品网| 精品久久久久久亚洲精品| 日韩电影网在线| www.99久久热国产日韩欧美.com| 三级精品视频久久久久| 亚洲欧美日韩中文在线| 欧美成人自拍视频| 亚洲а∨天堂久久精品9966| 亚洲精品国产精品久久清纯直播| 一区二区三区视频在线| 亚洲欧洲成视频免费观看| 日韩小视频在线观看| 亚洲精品美女在线| 国产一区二区三区18| 亚洲人午夜精品免费| 日韩国产高清污视频在线观看| 亚洲综合中文字幕68页| 亚洲欧美另类国产| 色婷婷综合久久久久中文字幕1| 日本午夜在线亚洲.国产| 亚洲网站在线观看| 欧美性猛交xxxx富婆| 91av在线视频观看| 日韩欧美国产激情| 日韩极品精品视频免费观看| 日韩免费在线电影| 日韩视频免费在线观看| 91亚洲精品久久久| 欧美精品久久久久久久免费观看| 日本久久精品视频| 日韩av电影手机在线| 亚洲国产精品va在线| 久久人人爽国产| 中文字幕久久亚洲|