2010-11-17 46 views
6

Tôi cần biết vì tôi cho rằng cần phải biết nó là gì để tạo ra một Lua toàn cầu bằng cách sử dụng lua_setglobal().Trạng thái Lua là gì?

Trả lời

7

dụ thiệu tóm tắt có thể giúp ...

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

Bạn có biết tại sao có thể có nhiều đối tượng 'lua_State' trong một chương trình không? [Tôi cần trợ giúp với câu hỏi này tại đây] (http://stackoverflow.com/questions/41080633/can-i-load-additional-functions-in-base-open-without-breaking-lua-state). Như tôi đã nêu [bên dưới] (http://stackoverflow.com/a/4201531/826983), tôi nghĩ rằng phải có một giá trị được đặt cho 'L-> l_G -> _ defaultmeta.value.gc' tại thời điểm tôi ăn cắp con trỏ tới cấu trúc 'lua_State', nhưng vì lý do nào đó mà không có cấu trúc bị đánh cắp nào được thiết lập. – displayname

10

Bạn sẽ muốn xem trang này trong Lập trình ở Lua: A first example Để thực hiện tương tự, giả sử chương trình C hoặc C++ đang chạy trong một hộp nhỏ và có quyền truy cập vào các chức năng, biến, v.v. Lua_State về cơ bản là một cách để truy cập những gì đang xảy ra trong hộp Lua "trong quá trình thực hiện chương trình của bạn và cho phép bạn dán hai ngôn ngữ lại với nhau.

+0

Bạn có thể nói, tại sao lại có thể có nhiều 'lua_State' đối tượng trong một chương trình? Tôi hiện đang cố gắng để móc vào quá trình khởi tạo Lua và bây giờ tôi phát hiện ra rằng có ít nhất 3 đối tượng 'lua_State' khác nhau. Những gì tôi không hiểu - và điều này [liên quan đến câu hỏi của tôi] (http://stackoverflow.com/questions/41080633/can-i-load-additional-functions-in-base-open-without-breaking- lua-state) - là lý do tại sao 'L-> l_G -> _ defaultmeta.value.gc' là * luôn luôn *' NULL'. Tất cả ba cấu trúc có được bởi và không ai trong số họ có một giá trị thiết lập tại thời điểm đó. Nhưng điều này không thể, bởi vì mã Lua ban đầu trông giống như – displayname

+0

như thể họ nên đặt giá trị ở giai đoạn này của quá trình khởi tạo. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời! – displayname

Các vấn đề liên quan