3

lua から変数を解析すると、lua の動作がおかしくなりました。

C++:

int LuaManager::SetTimer(lua_State *pLua)
{
    if (!lua_isstring(pLua, 0)) throw "expected: string";
    if (!lua_isnumber(pLua, 1)) throw "expected: number";

    std::string callback = lua_tostring(pLua, 0);
    double delay = lua_tonumber(pLua, 1);
    Timer timer = Timer(callback, delay);

    return 0;
}

ルア:

SetTimer("Durp", 10);

行から「0x76C44598 での初回例外: Microsoft C++ 例外: char at memory location 0x00D7F588」が表示されます

std::string callback = lua_tostring(pLua, 0);

コードをデバッグし、例外がポップアップしたときに続行を押すと、ランダム変数が変数にスローされます。についても同様double delayです。

しかし、私が言うとき:

std::string callback = lua_tostring(pLua, -2);
double delay = lua_tonumber(pLua, -1);

それでも例外は発生しますが、正しい変数がスローされます。

4

1 に答える 1

1

私の記憶から、ライン

std::string callback = lua_tostring(pLua, 0);

する必要があります

std::string callback = lua_tostring(pLua, 1);

lua のインデックスは 1 から始まるためです。

于 2015-01-19T07:01:38.307 に答える