如何在嵌入式系统中使用Lua的C API?

我正在尝试将一些Lua脚本添加到一个用C编写的固件项目中。目前,这个脚本是一个配置表,在C文件的main.c中,我正在尝试获取num变量的值,所有这些操作都是使用C API进行的。

我在我的项目中包含了Lua for Desktop的标准源文件(我已经听说过_eLua_,但是我不需要在Lua中实现完整的代码,我需要有Lua和C文件共存于我的项目中)。在使用gcc编译器的计算机上测试时,它运行得很好,但是当我尝试将相同的想法传递给我的微控制器时,它编译并且没有错误,但它似乎在从lua文件获取值时存在问题,因为变量valueFromLua始终等于1。

我的项目文件夹树具有以下结构:

  • Source
    • main.c
  • Tools
    • lua
      • scripts
        • config_table.lua

config_table.lua

config_table = {
    num = 10
}

main.c

  lua_State *L = luaL_newstate();
    uint8_t valueFromLua;

    if(luaL_dofile(L, "./Tools/lua/scripts/config_table.lua") == LUA_OK)
    {
        lua_getglobal(L, "config_table");
        if(lua_istable(L, -1))
        {
            lua_getfield(L, -1, "num");
            valueFromLua = lua_tointeger(L, -1);
        }
    }
    else
    {
        valueFromLua = 1;
    }

我将非常感激您的意见,谢谢!

点赞