如何在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+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告