lua和c的互相调用(适用于mac os)
一、C调用Lua
-------------------------------------test.c----------------------------------
#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
lua_State* L;
int getAdd(int x,int y)
{
int result = 0;
lua_getglobal(L,"add");// 获取lua中的函数
lua_pushnumber(L, x); // 压入参数x和y
lua_pushnumber(L, y);
lua_call(L,2,1);// 调用add方法(此外还可以使用可以检测错误的lua_pcall),第二个参数是C传递给lua的参数个数,第三个参数是lua返回给C的结果个数
result = (int)lua_tonumber(L, -1);// 获取add函数的返回
lua_pop(L, 1);
return result;
}
int main(int argc,char** argv)
{
L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "add.lua");// 执行add.lua,使add函数生效
int result = getAdd(10,15);
printf("the result is %d\n",result);
lua_close(L);
return 0;
}
-------------------------------------add.lua---------------------------------
function add(
一、C调用Lua
-------------------------------------test.c----------------------------------
#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
lua_State* L;
int getAdd(int x,int y)
{
int result = 0;
lua_getglobal(L,"add");// 获取lua中的函数
lua_pushnumber(L, x); // 压入参数x和y
lua_pushnumber(L, y);
lua_call(L,2,1);// 调用add方法(此外还可以使用可以检测错误的lua_pcall),第二个参数是C传递给lua的参数个数,第三个参数是lua返回给C的结果个数
result = (int)lua_tonumber(L, -1);// 获取add函数的返回
lua_pop(L, 1);
return result;
}
int main(int argc,char** argv)
{
L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "add.lua");// 执行add.lua,使add函数生效
int result = getAdd(10,15);
printf("the result is %d\n",result);
lua_close(L);
return 0;
}
-------------------------------------add.lua---------------------------------
function add(