嵌入式 Linux C ARM 我爱编程

Lua和C如何交互(二)

2018-01-19  本文已影响3人  程序手艺人

上一篇文章描述了Lua和C交互的原理, 这篇文章主要通过Demo程序加深Lua和C的交互. 涉及到交互,分为:

这里先描述C中如何调用Lua函数, 想象一下, C到底怎么和Lua进行通信,如何告诉它我调用的是xxx参数?

hello.lua

str = "hello world"
-- 定义一个tab
tb = {name = "hello",id = 20180119}   

注意: Lua使用--表示为注释

main.c

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

#include<stlib.h>
#include<stdio.h>
int main(void)
{
    char *str;
    lua_State *L;
    int li;
    L = luaL_newstate();                        /* 创建Lua虚拟机*/
    luaL_openlibs(L);                           /* 加载Lua基本库 */
    luaL_loadfile(L, "hello.lua");              /* 加载Lua文件,但是不运行 */
    lua_pcall(L, 0, 0, 0);                      /* 运行Lua文件,参数个数, */
    //luaL_dofile(L,"hello.lua");

    li = lua_gettop(L);                          /* 返回栈顶索引(即栈长度)*/
    lua_getglobal(L,"str");                      /*  获取str的值,压入栈中 */
    str=lua_tostring(L,1);                       /*  出栈,将给定索引处的Lua值转换为C字符串 */
    printf("str = %s\n",str);
}
上一篇 下一篇

猜你喜欢

热点阅读