openwrt 中使用C调用lua脚本(一)

在openwrt开发中我们经常会使用到lua语言,lua语言的优越性就不用我多说了,百度上有很多相关介绍。本文的重点在于讲解如何使用C语言调用lua,至于lua调用C就很简单了,教程也很多。

现在有这样一个hello.lua 文件:

function add(x, y)
    return x + y;
end

然后我们写一个C程序来调用它:

#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

//调用lua中的add函数
int call_lua_add(lua_State *L)
{
    lua_getglobal(L, "add"); //获取add函数
    lua_pushnumber(L, 1); //第一个操作数入栈
    lua_pushnumber(L, 3); //第二个操作数入栈
    lua_pcall(L, 2, 1, 0); //调用函数,2个参数,1个返回值
    int sum = (int)lua_tonumber(L, -1); //获取栈顶元素(结果)
    lua_pop(L, 1); //栈顶元素出栈
    return sum;
}

int main()
{
    lua_State *L = luaL_newstate(); //新建lua解释器
    luaL_openlibs(L); //载入lua所有函数库
    luaL_dofile(L, "hello.lua"); //执行"Test.lua"文件中的代码
    printf("%d\n", call_lua_add(L));
    lua_close(L); //释放
    return 0;
}


使用如下命令进行编译:

gcc -o call-lua call-lua.c -I/usr/local/include/ -L/usr/local/lib/ -llua -lm -ldl


前提是你已经安装好lua的环境。

运行最终结果:


作者:mleaf
链接:http://www.mleaf.org/2017/06/02/openwrt-%e4%b8%ad%e4%bd%bf%e7%94%a8c%e8%b0%83%e7%94%a8lua%e8%84%9a%e6%9c%ac/
来源:mleaf的博客

本文章由作者:佐须之男 整理编辑,原文地址: openwrt 中使用C调用lua脚本(一)
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐