C++程序:
void main()
{
lua_State *L = luaL_newstate();
if (L == NULL)
{
return 1;
}
luaL_openlibs(L);
int ret = luaL_dofile(L, "main.lua");
lua_getglobal(L,"event");//获取函数名
lua_pcall(L,0,0,0);//参数数量,函数返回值,错误输出函数(lua的函数,地址)
}
lua程序:
function event()
print("c++ call lua function event")
end
运行结果:
当函数出错时会将错误压入栈中,此时可以在前后使用lua_gettop获取栈中数据的个数。
改进一下C++和lua的代码:
void main()
{
lua_State *L = luaL_newstate();
if (L == NULL)
{
return 1;
}
luaL_openlibs(L);
int ret = luaL_dofile(L, "main.lua");
printf("top = %d \n", lua_gettop(L));
lua_getglobal(L,"event");//获取函数名
if (lua_pcall(L, 0, 0, 0) != 0)//参数数量,函数返回值,错误输出函数(lua的函数,地址)
{
printf("c++ call lua function error %s\n",lua_tostring(L,-1));//返回错误,将错误压入到栈顶
}
printf("top = %d \n", lua_gettop(L));
}
lua中代码:
function event1()
print("c++ call lua function event")
end
运行结果:运行后将错误压栈,top由0变成1