背景
当前我在/usr/lib64/目录中新加了个有c++代码编译的test.so文件,该so文件中有一个对外接口test_print(),请问我在组件中要怎样调用这个对外接口呢?
方案
方案1: 通过在组件的lua代码中采用如下方式:
local ffi = require 'ffi'
ffi.cdef[[
int test_print();
]]
function demo:init()
local status, result_or_err = pcall(function()
return ffi.load("/usr/lib64/libtest.so")
end)
if status then
self.lib_core = result_or_err
local init_ret = self.lib_core.test_print()
else
self.lib_core = nil
end
end
方案2:在lua代码中使用dlopen(“/usr/lib64/libtest.so”)这个接口,当前都是c代码中使用的该接口,lua代码中要怎样使用呢?
问题
1.请问是否还有其他方式可以实现在lua中调用.so库中接口?
2.上述方案1的方式是否可行?