2010-11-17 39 views
6

我需要知道,因爲我應該需要知道使用lua_setglobal()來創建Lua全局是什麼。什麼是Lua州?

回答

7

簡單的例子可以幫助...

lua_State* L=lua_open();   // create a Lua state 
luaL_openlibs(L);     // load standard libs 

lua_pushstring(L, "nick");   // push a string on the stack 
lua_setglobal(L, "name");   // set the string to the global 'name' 

luaL_loadstring(L, "print(name)"); // load a script 
lua_pcall(L, 0, 0, 0);    // call the script 
+0

你知道爲什麼程序中可能有多個'lua_State'對象嗎? [我在這裏需要幫助這個問題](http://stackoverflow.com/questions/41080633/can-i-load-additional-functions-in-base-open-without-breaking-lua-state)。正如我在[下文](http://stackoverflow.com/a/4201531/826983)中所述,我認爲在我竊取時應該爲'L> l_G - > _ defaultmeta.value.gc'設置一個值指向'lua_State'結構體的指針,但由於某些原因,被盜結構體中的非結構體確實已設置。 – displayname 2016-12-11 21:57:32

10

你需要在Lua程序設計中看看這個頁面:A first example作爲一個類比,假設C或C++程序運行在一個小盒子裏並且可以訪問它的函數,變量等等。 lua_State基本上是一種在執行程序期間訪問Lua「框」中發生的事情的方法,並允許您將兩種語言粘合在一起。

+0

你所知道的,爲什麼有可能是在一個程序的多個'lua_State'對象?我目前正試圖掛鉤Lua初始化過程,現在我發現至少有3個不同的'lua_State'對象。我不明白 - 這和[與我的問題有關](http://stackoverflow.com/questions/41080633/can-i-load-additional-functions-in-base-open-without-breaking- lua-state) - 爲什麼'L-> l_G - > _ defaultmeta.value.gc'總是*'NULL'。所有三個結構都經過並且當時沒有任何價值。但這不可能,因爲原始的Lua代碼看起來像 – displayname 2016-12-11 21:54:43

+0

,就好像它們應該在初始化過程的這個階段設置了一個值。任何幫助將是偉大的! – displayname 2016-12-11 21:54:59