簡體   English   中英

從C ++調用Lua表中的函數

[英]Calling functions in a Lua table from C++

我有一個Lua表/對象:

bannana

而這個Lua表里面有一個叫做chew的函數,它接受一個參數

bannana.chew(5)

我也使用過SWIG ,例如有一個CPerson類:

class CPerson {
    public:
        // ....
        void Eat();
        // ....
};

我可以從Lua獲取此對象的實例:

person = engine:getPerson()

我需要做的是以下Lua代碼:

person = engine:getPerson()
person:Eat(bannana)

person:eat會調用bannana表中的chew函數,傳遞一個參數。

由於CPerson是用C ++實現的,假設CPerson類已經有一個Lua狀態指針,那么實現Eat()需要做些什么改變?

Edit1:我不想知道如何將C ++類綁定到Lua,我已經有SWIG為我做這個,我想知道如何從C ++中調用Lua表中的Lua函數。

Edit2: CPerson類和bannana表都是一般示例,可以假設CPerson類已經有一個LuaState指針/引用,並且Eat方法的函數簽名可以由回答的人改變。

忽略任何錯誤檢查......

lua_getglobal(L, "banana"); // or get 'banana' from person:Eat()
lua_getfield(L, -1, "chew");
lua_pushinteger(L, 5);
lua_pcall(L, 1, 0, 0);

也許“ Simpler Cpp Binding ”會很有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM