Luaから任意の関数をC側に登録し、 任意のタイミングでCからその関数を呼び出したいケースなどがあると思います。 その場合、Lua側の関数は何かから参照されていないといずれGCに処理されてしまいます。 そこで、登録場所として使うのがLUA_REGISTRYINDEXです。 ここに登録されたオブジェクトはLuaからは触れないオブジェクトになるので、消される心配がありません。
Luaから任意の関数をC側に登録し、 任意のタイミングでCからその関数を呼び出したいケースなどがあると思います。 その場合、Lua側の関数は何かから参照されていないといずれGCに処理されてしまいます。 そこで、登録場所として使うのがLUA_REGISTRYINDEXです。 ここに登録されたオブジェクトはLuaからは触れないオブジェクトになるので、消される心配がありません。
C++の関数をLuaから呼び出す C++をLuaから呼び出す際、C++側のクラスのなかのメソッドを呼び出したい場合、そのクラスのポインタが必要となる。グローバル変数に代入するのは気持ちが悪いので、Luaのクロージャーにポインタを記憶させ、関数が呼ばれるたびにそこから引っ張りだすことを考える。 結論から言うと次の通り: #include <iostream> #include <Lua53beta\lua.hpp> #include <exception> using namespace std; class Lua { public: Lua() { // lua_Stateの生成 L = luaL_newstate(); // Lua標準ライブラリの読み込み luaL_openlibs(L); } ~Lua() { lua_close(L); } protected: void regi
このリファレンスマニュアルは Lua 言語の公式の定義です。 Lua プログラミングの完全な導入には Programming in Lua を参照してください。 スタート · 目次 · 索引 Copyright © 2011 Lua.org, PUC-Rio. Freely available under the terms of the Lua license. by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2011 Lua.org, PUC-Rio. Freely available under the terms of the Lua license. 目次 · 索引 0 – 日本語訳について この文章は、 Lua 5.2 Reference Manual を原著者に
[-?, +?, -] int lua_yield (lua_State *L, int nresults); Yields a coroutine. This function should only be called as the return expression of a C function, as follows: return lua_yield (L, nresults); When a C function calls lua_yield in that way, the running coroutine suspends its execution, and the call to lua_resume that started this coroutine returns. The parameter nresults is the number of value
第6章 C言語との連携¶ LuaとC言語を連携させるためには,スタックの仕組みを理解しておかなければなりません. LuaからC言語側にデータを渡す,またはC言語側からLuaにデータを渡す場合, Luaスタックと呼ばれるものを使用します. スタックとは¶ スタック(Stack)は上図で表すようなデータ構造です. データは上から順に積み上げられていきます. スタックにデータを積み上げる動作を プッシュ(Push)するといいます. 下図はスタックに値10をプッシュしている様子を 表しています. またスタックの上部のデータを一つ削除する動作を ポップ(Pop)するといいます. 下図はスタックから値をポップしている様子を表しています.
I'm trying to install Lsyncd on Ubuntu 10.4 LTS but i get some error : > checking for LUA... no checking for > LUA... no checking for LUA... > configure: error: Package requirements > (lua >= 5.1.3) were not met: > > No package 'lua' found > > Consider adjusting the PKG_CONFIG_PATH > environment variable if you installed > software in a non-standard prefix. > > Alternatively, you may set the > env
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く