lua代码:
//这是一个lua中的局部函数
local function Test()
print("I am Test in Lua\n")
end
DoSomeThing(Test)
#include "stdafx.h"
#include "stdlib.h"
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
int nFooPtr = LUA_REFNIL; //空引用
int DoSomeThing(lua_State * L)
{
printf("inside c core dosomething\n");
nFooPtr = luaL_ref(L,LUA_REGISTRYINDEX); //这里将test函数存入LUA_REGISTRYINDEX的表
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_register(L,"DoSomeThing",DoSomeThing);
if(0 != luaL_dofile(L,"helloworld.lua"))
{
printf("%s",lua_tostring(L,-1));
}
lua_getref(L,nFooPtr); //获取内部函数,并压入栈,若有参数的话,后面再赋值即可
if(lua_isfunction(L,-1))
lua_pcall(L,0,0,0);
system("pause");
return 0;
}