• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux下编写Lua扩展so文件和调用方法实例

    复制代码 代码如下:

    #include stdio.h>
    #include stdlib.h>
    #include ctype.h>
    #include errno.h>
    #include string.h>
     
    #include unistd.h>
    #include fcntl.h>
    #include sys/stat.h>
    #include limits.h>
     


    #include math.h>
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"


    /*  库 open 函数的前置声明   */
    int luaopen_mylib(lua_State *L);


    static int l_sin (lua_State *L)
    {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    //printf("ok now is  luahook!\n");
    return 1; /* number of results */
    }


    static const luaL_Reg mylib[] =
    {
    {"lsin", l_sin},
    {NULL, NULL} /* 必须以NULL结尾 */
    };


     int luaopen_mylib(lua_State *L)
    {
      luaI_openlib(L, "mylib", mylib, 0);
    return 1;
    }

    如果是.cpp文件,在luaopen_mylib一定要加 extern "C", 否则导出的函数会被重命名,切记切记

    编译:gcc mylibs.c -fPIC -shared -o libmylib.so -llua

    复制代码 代码如下:

    Makefile文件
    CXX =gcc
    LIBNAME:=libmylib.so
    HDRNAME:=mylibs.c
    TARGETNAME:=mylibs
    CNAME:=$(patsubst %,%.c,$(TARGETNAME))
    ONAME:=$(patsubst %,%.o,$(TARGETNAME))
    all:libmylib
    libmylib: $(ONAME)
    $(CXX) -g -shared -Wl,$(LIBNAME) \
    -o $(LIBNAME) $(ONAME) -llua
    %.o: %.c
    $(CXX) -fPIC -c -Wall $(CNAME)clean:$(RM) *.o *.so

    lua调用脚本:
    复制代码 代码如下:

    local one, two, three = package.loadlib("libmylib.so", "luaopen_mylib")()
    print(mylib.lsin(10))

    您可能感兴趣的文章:
    • Python下调用Linux的Shell命令的方法
    • 利用Golang如何调用Linux命令详解
    • Linux makefile 和shell文件相互调用实例详解
    • 浅谈在linux kernel中打印函数调用的堆栈的方法
    • 详解Linux驱动中,probe函数何时被调用
    • 三种方法实现Linux系统调用
    • 举例讲解Linux系统下Python调用系统Shell的方法
    • Python在Windows和在Linux下调用动态链接库的教程
    • Linux下使用python调用top命令获得CPU利用率
    • Java调用linux shell脚本的方法
    • 详解linux系统调用原理
    上一篇:Lua5.1中加载dll动态链接库的方法
    下一篇:Lua中遍历文件操作代码实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Linux下编写Lua扩展so文件和调用方法实例 Linux,下,编写,Lua,扩展,文件,