C++でLua関数インスタンスを呼び出す

1929 ワード

ああ、今日はちょっと気分が悪いので、うるさいことは言わないでください.(ナレーション:よかった…)
前章転送ドア://www.jb 51.net/article/55096.htm
前の章の紹介を経て、Luaのスタックに詳しいと信じています.まだよく知らない友达なら、前のチュートリアルを何度も見たり、コードを何度も叩いたりすることをお勧めします.
では、Luaのスタックに慣れていれば、次の内容は簡単です.
今日はC++がLuaの関数を呼び出す方法を見てみましょう.まず、Luaファイルがどのようになっているかを見てみましょう.
 
  
-- helloLua.lua
myName = "beauty girl"

helloTable = {name = "mutou", IQ = 125}

function helloAdd(num1, num2)
 return (num1 + num2)
end;


複数のhelloAdd関数が表示されます.では、C++でこの関数を呼び出します.
(ナレーション:getglobalも使うに違いない、毎回あるよ~!=)
 
直接コードを入力しました:
 
  
/* C++ lua */
void HelloLua::demo3() {
    lua_State* pL = lua_open();
    luaopen_base(pL);

    /* */
    luaL_dofile(pL, "helloLua.lua");

    /* helloAdd */
    lua_getglobal(pL, "helloAdd");

    /* */
    lua_pushnumber(pL, 10);
    lua_pushnumber(pL, 5);

    /*
        , , ,
        Lua , ,
    */
    lua_call(pL, 2, 1);

    int iResult = lua_tonumber(pL, -1);
    CCLOG("iResult = %d", iResult);
}


手順を簡単に説明します.
1)実行スクリプト(ナレーション:くだらないことを言うのは知っています...)
2)helloAdd関数をスタックに配置する:lua_getglobal(pL, “helloAdd”) .(ナレーション:ほら、わかるよ~!)
3)helloAddには2つのパラメータがあり、luaにパラメータを渡すので、2つのパラメータはスタックに入れます.
4)第2ステップと第3ステップではすでに関数に必要なデータをスタックに入れており,次にluaにスタックにデータを取りに行くように伝え,関数~!呼び出しlua_コールでいいです.注釈はもう詳しくなっています.ここでは繰り返しません.
(ナレーション:簡単すぎるでしょう.どうせ何をしても、荷物をスタックに捨てて、スタックから荷物を取ればOKです.出て行ってもいいですよ.後で教程を書きます.ツッコミを担当してください.)
 
さあ、みんなはナレーションを無視して、教程などはやはり私が書いたほうがいいです.主に、この仕事にツッコミを入れて、私の身分に合わないです.
(ナレーション:…ショックを受けたような気がします)
 
本章はこれで終わり、簡単ですよね?~
次章ではLuaでC++を呼び出す関数をご紹介します~!(ナレーション:これ好き~!)