我可以在LuaJIT中使用ffi.load加载多个库吗?
是否可以使用LuaJIT的ffi.load同时加载多个库 这样行吗我可以在LuaJIT中使用ffi.load加载多个库吗?,lua,ffi,luajit,Lua,Ffi,Luajit,是否可以使用LuaJIT的ffi.load同时加载多个库 这样行吗 本地外国金融机构=要求(“外国金融机构”) 本地bor=需要(“位”).bor 外国金融机构([[ //来自每个库的C绑定! ]]) 返回ffi加载(bor(“lib1”、“lib2”、“lib3”)) 由于LuaJIT FFI库的工作方式,您无法将多个库真正导入到单个用户数据中。 当LuaJIT FFI在未定义的符号上抛出错误时,您可以轻松地做的唯一一件事就是在受保护的调用中调用userdata getter,并循环您想要获取
本地外国金融机构=要求(“外国金融机构”)
本地bor=需要(“位”).bor
外国金融机构([[
//来自每个库的C绑定!
]])
返回ffi加载(bor(“lib1”、“lib2”、“lib3”))
由于LuaJIT FFI库的工作方式,您无法将多个库真正导入到单个用户数据中。
当LuaJIT FFI在未定义的符号上抛出错误时,您可以轻松地做的唯一一件事就是在受保护的调用中调用userdata getter,并循环您想要获取的每个库
local function get(t, k)
return t[k]
end
local superlib = setmetatable({
ffi.load "a",
ffi.load "b",
ffi.load "c"
}, {
__index = function (self, k, v)
for _,l in ipairs(self) do
local status, val = pcall(get, l, k)
if status then
return val
end
end
end
})