C調用lua的table里面的函數


網上搜索C、C++調用lua函數,有一大堆復制粘貼的。

但是搜索《C調用lua的table里面的函數》 怎么就沒幾個呢?

經過探索,發現其實邏輯是這樣的:

1.根據name獲取table ;並判斷是否為table

2.根據 name2 獲取table的成員變量或方法,並判斷棧頂的是否為函數

3.將函數的參數壓棧,然,沒有可以傳入一個nil;

4.調用lua_pcall 跟調用普通lua函數的方法就一樣了。

 

代碼如下:

bool call_table_func(const char * table,const char * func,const char *param)
{
    lua_getglobal(L,table);
    if(lua_istable(L,-1)||lua_type(L,-1)==LUA_TTABLE)
    {
        lua_pushstring(L,func);
        
        lua_gettable(L,-2);
        lua_pushstring(L,param);
        //lua_pushnil(L);
        
        if(lua_pcall(L,1,0,0))
        {
            return false;
        }
        return true;
    }
    return false;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM