2010-11-17 8 views
6

Мне нужно знать, потому что я, возможно, должен знать, что это такое, чтобы Lua global использовал lua_setglobal().Что такое Lua State?

ответ

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-lu-state). Как я сказал [ниже] (http://stackoverflow.com/a/4201531/826983), я думаю, что в момент, когда я ворую, должно быть значение, установленное для 'L-> l_G -> _ defaultmeta.value.gc' указатель на структуру 'lua_State', но по какой-то причине не украденные структуры не устанавливают его. – displayname

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

+0

, как будто они должны были установить значение на этом этапе процесса инициализации. Любая помощь будет замечательной! – displayname

Смежные вопросы