lua 调用.so 和 require 使用

编写自己的C函数,编译链接成动态链接库 , 供lua使用


sum2.c

#include 
#include 
#include 
#include 

static int ding_sum2(lua_State *L){
    double d1 = luaL_checknumber(L, 1);
    double d2 = luaL_checknumber(L, 2);
    lua_pushnumber(L, d1+d2);
    return 1;
}

static const struct luaL_Reg ding_lib[] = {
    {"ding_sum2" , ding_sum2},
    {NULL, NULL}
};

int luaopen_ding_lib(lua_State *L){
    luaL_newlib(L, ding_lib); // 5.2
    //luaL_register(L, "ding_lib",ding_lib); // lua 5.1
    return 1;
}


头文件需要自己添加自己的,各自的用途需自行百度查询


使用  gcc sum2.c -fPIC -shared -o ding_lib.so 生成动态库lua 调用.so 和 require 使用_第1张图片

编写测试文件test2.lua

local mylib = require "ding_lib"
print(type(mylib))
print(mylib.ding_sum2(23,17))

lua 调用.so 和 require 使用_第2张图片


参考学习网址

http://www.linuxidc.com/Linux/2014-09/106763.htm

http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155599.html


随便找个目录编写一个lua 脚本

在另外的一个目录再编写一个lua脚本

lua 调用.so 和 require 使用_第3张图片


test_add.lua

package.path = "/home/ding/data/?.lua;" .. package.path
local abc = require "add"  
print(type(abc))
print(sum2(1,2))

注意写对 package.path 

lua require""参看学习网址

http://blog.chinaunix.net/uid-552961-id-2736410.html

http://blog.csdn.net/langeldep/article/details/8289199

lua 调用.so 和 require 使用_第4张图片



你可能感兴趣的:(#,Nginx-Lua)