Lua篇 C 和Lua相互傳遞資料

2021-09-25 08:58:06 字數 1020 閱讀 2756

一. 建立lua虛擬機器

//為c++和lua互動提供了乙個虛擬棧

lua_state *lua_state = lual_newstate();

二. 載入lua庫

int bret = lual_loadfile(l, addr.lua);
三. 執行lua指令碼(附帶c/c++呼叫lua函式)

bret = lua_pcall(l, 0, 0, 0);

if (bret)

//讀取函式

lua_getglobal(l, "getvalue"); // 獲取函式,壓入棧中

lua_pushnumber(l, m_socket->m_cell.id);// 壓入第乙個引數

lua_pushnumber(l, m_socket->m_cell.type); // 壓入第二個引數

lua_pushnumber(l, m_socket->m_cell.value); // 壓入第三個引數

int iret = lua_pcall(l, 3, 1, 0);// 呼叫函式,呼叫完成以後,會將返回值壓入棧中,2表示引數個數,1表示返回結果個數。

// 呼叫出錯

if (iret)

c++裡面獲取lua全域性變數的值

首先,我們在hello.lua裡面定義乙個全域性變數

myname = "levie"
然後我們在c++裡面訪問它:

lua_getglobal(lua_state, "myname");

std::string myname = lua_tostring(lua_state, -1);

//從棧中彈出元素個數。

lua_pop(lua_state, 1);

std::cout<<"hello: "《這一次我們又是通過lua_getglobal來把myname這個全域性變數壓到lua棧,然後用lua_tostring來取這個值。

Lua教程 C 和Lua相互傳遞資料 2

這是我的lua系列教程的第二篇,本篇文章主要介紹c 和lua相互傳遞資料。如果你還不知道怎麼在c c 裡面呼叫lua指令碼的話,請參考這篇文章.本文主要介紹基本資料型別的傳遞,比如整形 int 字串 string 數字 number 及bool值。由於在上乙個教程裡面已經介紹過如何在c c 裡面嵌入...

lua和c 相互呼叫

include include include include include extern c lua state l int luaadd lua state l,int x,int y extern int cl domylua lua state l extern int cl drawte...

LUA c 互動篇 c 向lua傳遞table

2.測試 an highlighted block typedef unordered map double sdmap static void adddic lua state l,sdmap mp static intaddtablearray lua state l int size,sdma...