2014-01-25 86 views
3

在我的劇本我有這個全局變量: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返回一個空ptr,表明找不到全局變量。

可能是什麼問題? 謝謝。

回答

6

loadstring只是將字符串編譯成一個Lua塊,但要執行塊必須調用lua_pcall。在loadtring之後執行該操作,或者在需要重複打包時將其分配給全局或ref註冊表。

有關代碼示例,請參閱其他SO帖子中的關鍵字「luaL_loadstring lua_pcall」,例如 LUA_MULTRET not working as expectedc++ lua error on setting global variable

+0

謝謝你的時間,目前我無法測試這一點,但只要我可以,我會的。 –