Lua 调用自定义C模块
Lua 调用自定义C模块
这是《Lua程序设计》中提到的,但是想成功执行,对于初学Lua的确没那么简单。这里涉及如何如何生成一个动态链接库so文件;Lua5.2中导出函数从LuaL_register变成了LuaL_newlib。对于具体的细节有待深入。这里的模块名是hello_lib, Lua解释器会根据名字找到对应的模块,而后执行其中的 luaopen_XXX方法。
Lua程序设计(第2版)中文 PDF
代码:
#include <math.h>
#include <lua5.2/lua.h>
#include <lua5.2/lauxlib.h>
#include <lua5.2/lualib.h>
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 语言 15 分钟快速入门
Lua程序设计(第二版)阅读笔记
NetBSD 将支持用 Lua 脚本开发内核组件
CentOS 编译安装 Lua LuaSocket
Lua 的详细介绍:请点这里
Lua 的下载地址:请点这里
本文永久更新链接地址:
评论暂时关闭