c获取lua全局变量 5

来源:互联网 发布:java中方法的意思 编辑:程序博客网 时间:2024/06/07 12:40

lua文件内容

width = 500;height = 300;

c代码如下


lua_State* IniLua(){lua_State* L = luaL_newstate();luaL_openlibs(L);return L;}void LoadLuaFile(lua_State* L, const char* fname){if (luaL_loadfile(L,fname) || lua_pcall(L,0,0,0)) {        printf("Error Msg is %s.\n",lua_tostring(L,-1));        return;    }}void GetData(lua_State* L,int* w, int* h){// lua_getglobal是宏,其原型为:#define lua_getglobal(L,s)  lua_getfield(L, LUA_GLOBALSINDEX, (s))。//  每次调用这个宏的时候,都会将Lua代码中与之相应的全局变量值压入栈中,// 第一次调用时将全局变量"width"的值压入栈中,之后再次调用时再将"height"的值也压入栈中。lua_getglobal(L,"width");    lua_getglobal(L,"height");// 获取栈中内容*w = lua_tointeger(L,-1);*h = lua_tointeger(L,-2);}int main(){lua_State* L = IniLua();LoadLuaFile(L,"test.lua");int w,h;GetData(L,&w,&h);    printf("width = %d, height = %d\n",w,h);    lua_close(L);    return 0;}








0 0
原创粉丝点击