歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Lua 調用自定義C模塊

這是《Lua程序設計》中提到的,但是想成功執行,對於初學Lua的確沒那麼簡單。這裡涉及如何如何生成一個動態鏈接庫so文件;Lua5.2中導出函數從LuaL_register變成了LuaL_newlib。對於具體的細節有待深入。這裡的模塊名是hello_lib, Lua解釋器會根據名字找到對應的模塊,而後執行其中的 luaopen_XXX方法。

Lua程序設計(第2版)中文 PDF http://www.linuxidc.com/Linux/2013-03/81833.htm

代碼:

#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 分鐘快速入門 http://www.linuxidc.com/Linux/2013-06/86582.htm

Lua程序設計(第二版)閱讀筆記 http://www.linuxidc.com/Linux/2013-03/81834.htm

NetBSD 將支持用 Lua 腳本開發內核組件 http://www.linuxidc.com/Linux/2013-02/79527.htm

CentOS 編譯安裝 Lua LuaSocket http://www.linuxidc.com/Linux/2011-08/41105.htm

Lua 的詳細介紹:請點這裡
Lua 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved