lua 好归好,但有很多对效率要求较高的服务,还得让C来完成。本篇学习下Lua如何调用C。
最重要的部分:
定义一个 luaopen_* 函数,并调用 luaL_openlib 函数
int luaopen_mylib(lua_State *L)
{
luaL_Reg l[] = {
{"test1",test1}, // key-val,相当于{"(lua调用时使用的函数名)",C定义函数名(函数指针)}
{"test2",test2},
{NULL,NULL} // 必不可少
};
luaL_newlib(L,l);
return 1;
}
这个函数相当于作为此动态库的main函数。需要注意:
1、luaopen_是此函数的前缀,不可修改。后面的内容是我们在lua中使用 require 引用此库时的字符串名称(假如名称中带有下划线,在使用require需要将下划线替换为点,例如:“mylib_test”->“mylib.test”)。
2、在Lua5.0中调用的是luaL_openlib,但是在Lua5.3中,则是使用luaL_newlib
下面是一