码迷,mamicode.com
首页 > 其他好文 > 详细

Lua 调用自定义C模块

时间:2014-09-01 15:37:33      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:lua   c module   lual_newlib   



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



执行过程和结果:
bubuko.com,布布扣
bubuko.com,布布扣


Lua 调用自定义C模块

标签:lua   c module   lual_newlib   

原文地址:http://blog.csdn.net/vonzhoufz/article/details/38980347

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!