C语言和Lua交互(二)

来源:互联网 发布:php二次开发是什么 编辑:程序博客网 时间:2024/05/29 17:33

C语言调用Lua文件

获取lua全局变量

新建config.lua配置文件,文件内容:

width=200height=300

同目录新建test.c文件

#include <stdio.h>#include <string.h>#include "lua.h"#include "lauxlib.h"#include "lualib.h"lua_State *L = NULL;static void loadConfig(int *w,int *h){        //读取config.lua文件的全局变量    lua_getglobal(L,"width");//把全局变量width压入栈    lua_getglobal(L,"height");        if(!lua_isnumber(L,-2)){        error(L,"width should be a number \n");    }    if(!lua_isnumber(L,-1)){        error(L,"height should be a number \n");    }    *w=lua_tointeger(L,-2);    *h=lua_tointeger(L,-1);}int main(void){    L = luaL_newstate(); //打开Lua,创建一个新环境(新的Lua状态)    luaL_openlibs(L);   //打开标准库, 如: print, pcall    //加载config.lua文件    if (luaL_loadfile(L,"config.lua") || lua_pcall(L,0,0,0))    {        error(L,"can not run config file: %s",lua_tostring(L,-1));    }    int width=0;    int height=0;    loadConfig(&width,&height);//从lua文件中加载配置    printf("width:%d,height:%d",width,height);    lua_close(L);//关闭lua状态    return 0;}

编译代码:

gcc -lm  -g -o test test.c /usr/local/lib/liblua.a -ldl
0 0
原创粉丝点击