Lua 和 C/C++ 互相呼叫例項分析

發表於2016-01-01

lua作為小巧精悍的指令碼語言,易於嵌入c/c++中 , 廣泛應用於遊戲AI ,實際上在任何經常變化的邏輯上都可以使用lua實現,配合c/c++實現的底層介面服務,能夠大大降低系統的維護成本。下面對lua和c/c++的互動呼叫做一個例項分析:
lua提供了API用於在c/c++中構造lua的執行環境,相關介面如下:

lua和c/c++的資料互動通過”棧”進行
,運算元據時,首先將資料拷貝到”棧”上,然後獲取資料,棧中的每個資料通過索引值進行定位,索引值為正時表示相對於棧底的偏移索引,索引值為負時表示相對於棧頂的偏移索引,索引值以1或-1為起始值,因此棧頂索引值永遠為-1
,棧底索引值永遠為1 。 “棧”相當於資料在lua和c/c++之間的中轉地。每種資料都有相應的存取介面 。
資料入”棧”介面:

資料獲取介面:

“棧”操作介面:

lua中定義的變數和函式存放在一個全域性table中,索引值為LUA_GLOBALSINDEX
,table相關操作介面:

當”棧”中包含執行指令碼需要的所有要素(函式名和引數)後,呼叫lua_pcall執行指令碼:

下面進行例項說明:
func.lua

相關文章