2011-04-05 9 views
2

から機能を取得し、実行します。LuaはC

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

どのように私はそれを行うことができますCのAPIを使用して、私はその後、保存することができますdoSomethingのためのC Luaの関数を作成すること後で実行するために渡された関数?

答えて

3

スタック上の通常のエントリです。 lua_isfunction()でそれをチェックし、luaL_ref()を使用して参照を生成する(ガベージコレクタがそれを盗むことがないように)。そして、lua_topointer()はこのオブジェクトへのポインタを格納するために、あなたが何をしたいかによって決まる。

完了したら、それはちょうどluaL_unref()です。

+1

ああ、あとは 'lua_call()'だけですが、http://www.lua.org/manual/5.1/manual.html#lua_callの詳細を読んでください。 – hroptatyr