1,C代码
#include <stdio.h>
#include <stdlib.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
int f(lua_State *L,int x, int y)
{
int z;
lua_getglobal(L,"f"); //获取test.lua中的变量名称 并压入栈中
lua_pushnumber(L,x); //往栈中压入参数
lua_pushnumber(L,y);
//do the lua_pcall: 2 means two arguments,1 means one result
lua_pcall(L,2,1,0); //使用lua_pcall() 调用指定函数,返回结果会被压入栈
//get the result
z = (int)lua_tonumber(L,-1); //获取的结果值
lua_pop(L,1); //释放资源
return z;
}
int main(void)
{
//创建一个Lua解释器
lua_State *L=luaL_newstate();
//载入Lua解释会用到的库
luaL_openlibs(L);
luaL_dofile(L,"test.lua"); //打开Lua脚本文件
sleep(1);
printf("C get the result %d \n",f(L,10,20)); //调用f函数往test.lua中压栈
lua_close(L);
return 0;
}
2,Lua脚本的内容