1

私は次のコードを持っています:

lua_State *lua;
lua = lua_open();
luaL_openlibs(lua);

std::string code = "print(gvar)\n"
    "function test()\n"
    "print(gvar)\n"
    "end\n";

if(!luaL_loadstring(lua, code.c_str())){
    if (lua_pcall(lua, 0, 0, 0)){
        const char* error = lua_tostring(lua, -1); 
        lua_pop(lua, 1);
    }
}

lua_pushstring(lua, "100");
lua_setglobal(lua, "gvar");
if (lua_pcall(lua, 0, 0, 0)){
    const char* error = lua_tostring(lua, -1); // returns "attempt to call a nil value"
    lua_pop(lua, 1);
}

lua_close(lua);

関数の呼び出しとグローバル変数の取得は正常に機能しますが、グローバル変数を設定しようとすると、「nil 値を呼び出そうとしています」というメッセージが表示されます。そして、私はそれがなぜなのか理解できませんか?

4

1 に答える 1