C++ Lua,获取全局字符串

在我的脚本中,我有这个全局变量:

name = "Stabilizer"

我正在尝试在 c++ 中获取这个变量,像这样:

char* CeScript::GetGlobalString(char* pName)
{
    luaL_loadstring(L, m_sScript.c_str());

    lua_getglobal(L, pName);

    return (char*)lua_tostring(L, -1);
}
....
char* _name = pScript->GetGlobalString("name");

但是,lua_tostring 返回一个 null 指针,表明无法找到全局变量。

可能出现了什么问题?

谢谢。

点赞
用户869951
用户869951

loadstring函数只将字符串编译为Lua chunk,要执行这个chunk,必须调用lua_pcall函数。在执行loadstring函数之后立即调用lua_pcall函数,或者如果需要重复执行,将其分配给全局变量或注册表中的引用。

有关代码示例,请参见其他SO帖子,例如关键字“luaL_loadstring lua_pcall”: LUA_MULTRET not working as expectedc++ lua error on setting global variable

2014-01-25 18:12:26