lua与C(二):LUA调用c

在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

 

 

 

posted on 2012-08-15 22:18  leonwei  阅读(101)  评论(0编辑  收藏  举报