在lua中调用C函数
c中的函数应该这样准备
注册单个函数:
所有可被lua调用的函数型为 typedef int (*lua_Cfunction)(lua_State*L)
例如
其中返回值是其压入栈的函数返回值的数量
2.然后将函数置入栈中 lua_pushfunction()
3.将函数从栈中推给lua lua_setglobal(L,name) name是在lua中这个函数的名字
注册一些函数,组成一个模块
1.首先定义这些函数
static int l_dir(lua_State*L){}
2.声明一个数组 包含模块中所有的函数及名称,数组元素类型为struct luaL_Reg
static const_struct luaL_Reg myLib[]={
{"lua中是函数名",c中的函数指针},
..
必须以{NULL,NULL}结尾
}
3.声明一个主函数
int luaopen_mylib(lua_State* L){
luaL_register(L,"luamyLib",myLib)
return1
}
这样就创建了一个table luamyLib包含myLib里的所有函数
4.如果将c程序编程动态链接库,在lua中通过require("库名称")来得到这个table