我有一个.so文件,想要从Lua中调用这个文件里的函数。

我有一个简单的C文件,像下面这样,我已经编译并将其转换为一个.so文件,并将.so文件传输到另一个目录中。

test.c

#include<stdio.h>
void disp()
{
  printf("This is comming from .so file");
}
int main()
{
  disp();
  return 0;
}

编译命令是:gcc -shared -o libtest.so -fPIC test.c

现在我有一个lua文件。我想要访问disp()函数。我应该怎么做?我尝试了以下方法,但没有成功。有什么建议吗?谢谢

test.lua

test={}
function test.init()
return disp()
end

return test

现在,当我执行require操作时,我收到以下错误提示:

Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
    require "test"
    test.init()
    ./test.lua:4: attempt to call global 'disp' (a nil value)
    stack traceback:
        ./test.lua:4: in function 'init'
        stdin:1: in main chunk
        [C]: in ?

点赞