前言
自從ulua在官網(wǎng)上出來后,lua 就被u3d開發(fā)人員喜愛。國內(nèi)有幾個高手把lua拿過來 接著進行了封裝。很多都是新手轉(zhuǎn)過來。lua語法一看遍知,但是大多數(shù)人還是不明白兩個語言之間的互相調(diào)用是怎么一回事,這也是難點和重點。所以今天想跟大家分享一下這方面的知識,讓大家少走彎路吧。
Lua是一種很好的擴展性語言,Lua解釋器被設(shè)計成一個很容易嵌入到宿主程序的庫。LuaInterface則用于實現(xiàn)Lua和CLR的混合編程。
C與lua交互面臨以下幾個問題:
1、由于lua里面的數(shù)據(jù)都是動態(tài)加載的所以內(nèi)存也是動態(tài)分配的,也沒有static 這樣的修飾,而C里面有 static const 這樣的靜態(tài)類型數(shù)據(jù)
2、c里面是手動管理內(nèi)存lua 里面是自動管理內(nèi)存
所以為了解決這些問題就采用了一個抽象棧來讓lua與c交換值,好比c里面的 void* 可以指向任何地址而不用管存儲類型。這樣兩邊都不管你傳的何種類型的參數(shù),只用知道它是一個地址指針。兩邊用的時候再強制轉(zhuǎn)換成對應(yīng)的類型。
下面開始本文的正文吧。
(一)C#調(diào)用Lua
測試環(huán)境:在VS2015中建一個C#控制臺應(yīng)用程序,并添加LuaInterface.dll的引用
LuaInterface下載地址:http://luaforge.net/projects/luainterface/(下載luainterface-1.5.3,這里面的資源比較多)
LuaInterface.Lua類是CLR訪問Lua解釋器的主要接口,一個LuaInterface.Lua類對象就代表了一個Lua解釋器(或Lua執(zhí)行環(huán)境),Lua解釋器可以同時存在多個,并且它們之間是完全相互獨立的。
簡單說明下步驟:

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



不 主站蜘蛛池模板: 县级市| 舞阳县| 聊城市| 兴文县| 桂平市| 安多县| 寻乌县| 晋中市| 丹巴县| 郯城县| 德惠市| 西乡县| 常熟市| 万年县| 石泉县| 台中市| 浪卡子县| 泰兴市| 桑植县| 旌德县| 兖州市| 邮箱| 宜君县| 元氏县| 濮阳县| 扎赉特旗| 台安县| 湘阴县| 新邵县| 濮阳市| 米易县| 青铜峡市| 开化县| 舒城县| 绍兴市| 灵台县| 濮阳市| 同仁县| 潜山县| 天峨县| 漯河市|