lua與C Cpp互動與整合

2021-07-04 00:04:37 字數 1275 閱讀 4259

在c/c++中整合lua

1、把lua.c、makefile、luac.c這幾個檔案刪除

2、對於xcode如果出現報錯的情況處理,在lua的資料夾中檢視解決辦法

從c/c++專案中讀取lua中的變數

lua_getglobal(l, "name")--直接把數字放到棧頂

if(lua_isnumber(l, -1))

int width = (int)lua_tonumber(l, -1)--isstring和isnumber 不是幫你轉化而是幫你檢查是否能轉化成字串和數字

其他的都是類似的;bool string

從c/c++專案中讀取lua中的函式的方式:

學習呼叫無參無返回值函式

學習呼叫有參無返回值 注意多引數的情況是先入棧的後呼叫

學習呼叫無參有返回值 返回值就在棧頂,刻意直接獲取

學習呼叫有參又返回值

學習呼叫多返回值的函式 多返回值第乙個返回值是-2,因為他是第乙個返回然後被壓入棧頂,後來又被下乙個返回值壓入棧頂

呼叫lua函式的方式

pcall函式和獲取棧值的注意

lua_pcall(m_pcall,n,r,f)//n 引數的個數,r 結果的個數,f失敗的返回值

lua_pcall的引數進行設定;

注意下面一般熟用的是assert()進行

讀取lua中的table和遍歷table

lua_getglobal(l,"name")

if(lua_istable(l, -1))

char* getfiled(lua_state*l , const char* key)

}從lua中呼叫c函式入門:

編寫乙個供lua呼叫的函式

static int l_getname(lua_state* l)

lua_pushcfunction(m_pluastate, l_getname);

lua_setglobal(m_pluastate,"getmyname");

lual_dofile(m_pluastate,"my.lua");

lua_pcall(m_pluastate,0,0,-1);

然後在lua中呼叫getmyname這個函式就可以了;

深入理解編寫c函式

1.理解供lua呼叫函式的原理

2.熟練編寫有引數的c函式的編寫

3.熟練編寫多返回值的c函式供lua使用

4.熟練編寫返回table的函式供lua使用

實現滑鼠與遊戲的互動(與遊戲中的物品互動)

我們這裡用到的是射線中的滑鼠螢幕射線 screenpointtoray 射線 ray ray new ray position startposition,position endposition 返回滑鼠座標 input,mouseposition 以上部分可參考開發者文件 拿到滑鼠在螢幕的射線 ...

C 與Lua互動,lua環境配置

1.新建控制台專案 2.勾選空專案,靜態庫。2.標頭檔案匯入原始碼中的全部.h 標頭檔案,原始檔匯入原始碼的的.c檔案,除 lua.c 和 luac.c外 3.編譯生成lib 1.新建控制台專案,專案 屬性 c c 常規 附加包含目錄 新增lua原始檔所在的目錄 2.鏈結器 常規 附加庫目錄 新增 ...

lua與C互動(3) 與lua表的簡單互動

c讀取lua表中字段的值。lua print print from test lua.name linxing age 19 list list.width 190 list.height 540 list.title rectangle cc include include include inc...