如何在C語言中編譯嵌入式Lua程式碼?


我們知道,Lua 在作為一種簡單的語言和嵌入式語言方面做得非常出色。由於提供了大量支援它的不同庫,Lua 與 C 語言配合得更好。

為了在 C 語言中編譯嵌入式 Lua,我們需要首先編寫一個 Lua 程式,然後編寫一個 C 程式來呼叫 Lua 程式函式,最後編譯 C 程式。

請考慮以下程式作為 Lua 程式:

print("--I am using Lua from within C--")

需要注意的是,以上 Lua 指令碼應儲存為 Script.Lua,因為我們將在下面顯示的 C 程式碼中使用該名稱。上述 Lua 指令碼將在 C 程式中被呼叫。

示例

請考慮以下程式碼:

#include <stdlib.h>
#include <stdio.h>
/* Include the Lua API header files. */
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(void) {
   static const luaL_reg lualibs[] =
   {
   { "base", luaopen_base },
   { NULL, NULL }
   { NULL,
   };
   /* A function to open up all the Lua libraries you declared above. */ static void openlualibs(lua_State *l) {
   const luaL_reg *lib;
      for (lib = lualibs; lib->func != NULL; lib++) {
         lib->func(l);
         lua_settop(l, 0);
      }
   }
   /* Declare a Lua State, open the Lua State and load the libraries (see above). */
   lua_State *l;
   l = lua_open();
   openlualibs(l);
   printf("This line in directly from C

");    lua_dofile(l, "script.lua");    printf("
Back to C again

");    /* Remember to destroy the Lua State */    lua_close(l);    return 0; }

現在我們完成了程式碼;我們只需要編譯上面顯示的 C 程式。為此,我們可以執行以下命令:

cc -o embed embed.c \
   -I/usr/local/include \
   -L/usr/local/lib \
   -llua -llualib

需要注意的是,**embed.c** 是上面顯示的 C 檔案的名稱。

此外,上面顯示的命令僅在您使用 Linux 機器時有效。

要在 Windows 上編譯程式碼,我們需要執行以下步驟:

  • 建立一個新專案。
  • 新增 embed.c 檔案。
  • 新增 2 個 Lua 庫 (*.lib) - 標準庫和核心庫。
  • 將 Lua 包含檔案的路徑新增到專案選項(“目錄”選項卡)。
  • 您可能還需要新增庫檔案的路徑 - 與上述方法相同。
  • 編譯並構建 - 就這樣。

輸出

This line in directly from C
--I am using Lua from within C--
Back to C again

更新於: 2021年7月20日

2K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.