C语言和Lua交互(二)

    xiaoxiao2021-03-25  105

    C语言调用Lua文件

    获取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
    转载请注明原文地址: https://ju.6miu.com/read-20215.html

    最新回复(0)