從 C++ 到 Lua 傳遞 Lua 指令碼


從 C++ 到 Lua 傳遞 Lua 指令碼的想法包括一個事實,即由於 Lua 是 ANSI C,我們需要載入庫和標頭檔案,並且如果我們在 C++ 中進行編碼,我們需要用 extern "C" 來封裝 #includes

常用且歷史較久的方法是載入 Lua 提供的庫,然後從 Lua 直接呼叫 C++ 函式。

要從 C++ 載入指令碼到 Lua,我們需要設定並關閉 Lua 直譯器,我們可以藉助以下程式碼來完成此操作。

示例

考慮如下所示的程式碼:

extern "C" {
   #include "lua.h"
   #include "lualib.h"
   #include "lauxlib.h"
}
int main(int argc, char *argv[]){
   lua_State* L;
   initialize Lua interpreter L = luaL_newstate();
   load Lua base libraries (print / math / etc) luaL_openlibs(L);
   ////////////////////////////////////////////
   We can use Lua here !
   /////////////////////////////////////////////
   lua_close(L);
   printf( "Press enter to exit..." );
   getchar();
   return 0;
}

之後,我們只需使用 LuaL_dostring(L, …) 函式,將字串直接傳送到 Lua 直譯器中,它將被執行,就好像該字串在用 dofile 執行的檔案中一樣。

示例

考慮如下所示的程式碼:

luaL_dostring(L, "for x = 1, 5 do print(x) end");

輸出

1
2
3
4
5


更新於: 19-Jul-2021

503 次瀏覽

開啟你的事業

在完成課程後獲得認證

開始
廣告
© . All rights reserved.