2011-04-05 67 views
2

執行功能。如果我有一些Lua代碼是這樣的:Lua的獲取和由C

doSomething(function() 
       print("Hello!") 
      end) 

我怎樣才能使它的是,使用C API,我創建C Lua的函數DoSomething的,然後可以保存函數傳遞給它以後執行?

回答

3

這只是一個正常的條目入棧。檢查它與lua_isfunction(),然後使用luaL_ref()生成一個引用(以便垃圾收集器不會偷它),然後可能lua_topointer()來存儲一個指向這個對象的指針,取決於你想用它做什麼。

當你完成它只是一個luaL_unref()

+1

Oh忽略了後面的執行位,這只是'lua_call()',但請確保您閱讀了http://www.lua.org/manual/5.1/manual.html#lua_call下的詳細信息 – hroptatyr 2011-04-05 23:08:12