lua调用c模块 c模块编写注意点

编写主旨是:编写的c函数都是static的 对外是私有的的 只提供一个外部公共的接口创建C模块

第一步:编写要注册的c函数 eg:static int add(int x,int y){return x+y;} static int sub(int x,int y){return x-y;}

第二步:将要注册的C函数通过类型为lua_Reg的数组保存 保存两个字段 字符串 = 函数指针

const static struct lua_Reg libs[]={{"add",add},{"sub",sub},{NULL,NULL}}

第三步:对外只提供一个外部公共接口用于创建C模块

int luaopen_Sunashu(lua_State *L) {luaL_register(L,"Suanshu",libs);

其中luaL_register根据给定的名称"libs"创建或者复用一个table 并且用lib是信息填充这个table;在luaL_register返回时 会将这个table留在栈中,luaopen_Sunashu返回1 表示将table给了lua

编写完C模块必须将其链接到解释器 将C代码编译成动态链接库 并放入C路径。这样动态库链接到lua 并寻找luaopen_Sunashu函数 将其注册为一个lua函数 然后调用它以打开模块。

猜你喜欢

转载自blog.csdn.net/weixin_41966991/article/details/89066296
今日推荐