获取lua全局变量
新建config.lua配置文件,文件内容:
width=200 height=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