1、從c讀取lua檔案:
lua_state *l = lual_newstate();
luaopen_base(l);
int ret=lual_dofile(l,"111.lua");
console::writeline("open ret=\n",ret);
lua_resume(l,0);
2、讀取乙個單獨的變數
111.lua中有: aa=3
lua_getglobal(l,"aa"); //將aa讀出來放到堆疊頂部
int s=lua_tointeger(l,-1); //從堆疊頂部讀取數字
console::writeline("top=,s}
3、讀取一維陣列
111.lua中有:tb1=
lua_getglobal(l,"tb1");
lua_getfield(l,-1,"x");
lua_getfield(l,-2,"y");
lua_getfield(l,-3,"z");
int a=lua_tointeger(l,-1);
int b=lua_tointeger(l,-2);
int c=lua_tointeger(l,-2);
console::writeline("top=,,",a,b,c);
4、讀取二維陣列
111.lua中有tb2=,}
其中,level是key,後面兩個是資料
lua_getglobal(l,"tb2"); //將tb2讀出放到棧頂
lua_pushnumber(l,1); //指定讀取tb2的第1行(如果要讀第2行請將這裡的1改為2),並將此行放到堆疊頂端,此時tb2在堆疊中變成了-2位置,所以下面一行取表時用的是-2
lua_gettable(l,-2); //從堆疊中-2行取出tb2放到堆疊頂端(-1位置)
lua_getfield(l,-1,"x");
lua_getfield(l,-2,"y");
int s=lua_tointeger(l,-1);
int t=lua_tointeger(l,-2);
console::writeline("top=,",s,t);
5、連續迴圈讀取陣列中的多個元素
lua_settop(l,0);
lua_getglobal(l,"tb2");
lua_pushnumber(l,1); //壓入key:第一行
lua_gettable(l,-2);
lua_getfield(l,-1,"x");
lua_getfield(l,-2,"y"); //得到第一行的兩個數字
int s=lua_tointeger(l,-1);
int t=lua_tointeger(l,-2);
console::writeline("top=,",s,t);
lua_pop(l,3);//把棧頂三行:兩個數字和乙個table彈掉,然後重新壓入key和table,得到新的一行。
lua_pushnumber(l,2); //壓入key:第二行
lua_gettable(l,-2);
lua_getfield(l,-1,"x");
lua_getfield(l,-2,"y"); //得到第二行的兩個數字
其他行照此類推。
Lua與C C 的互動
lua 從 取得 luatinker 可以從 取得 tolua 可以從 取得 關於lua與c c 的互動 c c 呼叫lua的函式還是比較簡單的,可以參考lua tinker的實現。lua呼叫c c 的函式如果用最原始的方式有很大限制,只能呼叫型別為 typedef int lua cfunctio...
lua與C C 的互動
基於vs的lua原始碼,位址為 lua作為小巧精悍的指令碼語言,易於嵌入c c 中 廣泛應用於遊戲ai 實際上在任何經常變化的邏輯上都可以使用lua實現,配合c c 實現的底層介面服務,能夠大大降低系統的維護成本。下面對lua和c c 的互動呼叫做乙個例項分析 lua提供了api用於在c c 中構造...
C 與Lua的互動
c 呼叫lua用 luainte ce.dll lua呼叫c 用luanet.dll 他們之間的互動主要就是靠這兩個庫檔案,需要把渣兩個檔案剛到vs工程下的debug資料夾下。using luainte ce using system using system.collections.generic...