您的位置:首页 > 编程语言 > Lua

C语言中调用LUA(3)--往Lua脚本中传递变量

2017-12-15 18:04 399 查看
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脚本的内容

print("I'm be tracefered")

function f(x,y)
print("It is my turn")
return x*y
end


3,编译

gcc -o xxx.c xxx   /usr/local/lib/liblua.a  -ldl  -lm

-lm   是连接对应的math库 不然连接了liblua仍然会报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: