美文网首页
luaJIT 调用 C代码打包成的so文件中的方法

luaJIT 调用 C代码打包成的so文件中的方法

作者: 不na讷 | 来源:发表于2022-05-24 16:29 被阅读0次

    注:文章只记录自己用的过程中的一些问题 和效果展示 如果没有帮助的话 请直接关闭
    语法或者需要查询的知识点和需要安装的环境自行查询

    • 环境:
      windows 11
      LuaJIT-2.1.0-beta3

    • 代码

    demo.lua

    local ffi = require("ffi")      -- 加载ffi库
    
    local myffi = ffi.load("demo.so")       -- 加载动态库
    
    --  所有使用的库函数都要对其进行声明,类似C语言引入.h头文件
    ffi.cdef [[
    int show(int a, int b);
    ]]
    
    --调用C代码
    print(myffi.show(1,2))
    
    

    demo.c

    #include <stdio.h>
    
    int show(int a, int b)
    {
        if (a < 0) {
            return 0;
        } 
        return a + b;
    }
    
    
    • 然后
      C代码编译成so文件
    gcc -shared -fPIC demo.c -o libtest.so      
    
    • 使用luajit 方式运行lua文件
      luajit demo.lua
    • 需要注意下面lua脚本中的代码 调用的方法 需要和C中的代码保持一致 改后要统一!!
    ffi.cdef [[
    int show(int a, int b);
    ]]
    

    相关文章

      网友评论

          本文标题:luaJIT 调用 C代码打包成的so文件中的方法

          本文链接:https://www.haomeiwen.com/subject/lbnjprtx.html