lua调用c 模块linux,Lua 调用自定义C模块

这是《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))

执行过程和结果:

61d2523b848e3f1cfa0447610ad50dda.png

Lua 的详细介绍:请点这里

Lua 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值