设为首页 加入收藏

TOP

Lua 调用自定义C模块
2014-11-23 20:28:56 来源: 作者: 【 】 浏览:18
Tags:Lua 调用 定义 模块

这是《Lua程序设计》中提到的,但是想成功执行,对于初学Lua的确没那么简单。这里涉及如何如何生成一个动态链接库so文件;Lua5.2中导出函数从LuaL_register变成了LuaL_newlib。对于具体的细节有待深入。这里的模块名是hello_lib, Lua解释器会根据名字找到对应的模块,而后执行其中的 luaopen_XXX方法。


代码:


#include
#include
#include
#include


static int hello_sin(lua_State *L){
double d = luaL_checknumber(L, 1);
lua_pushnumber(L, sin(d));
return 1;
}


static const struct luaL_Reg hello_lib[] = {
{"hello_sin" , hello_sin},
{NULL, NULL}
};


int luaopen_hello_lib(lua_State *L){
luaL_newlib(L, hello_lib);
//luaL_register(L, "hello_lib",hello_lib); // lua 5.1
return 1;
}


在Lua中调用:


local hello = require "hello_lib"
print(hello.hello_sin(1))


执行过程和结果:


Lua 调用自定义C模块


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Lua 中栈操作的C API示例 下一篇Java中a=a+b 与 a+=b区别 以及和..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: