假设有以下C代码:
struct Foo { int dummy; } int tryToAllocateFoo(Foo ** dest);
…如何在LuaJIT中进行以下操作?
Foo * pFoo = NULL; tryToAllocateFoo(&pFoo);
解决方法
local ffi = require 'ffi' ffi.cdef [[ struct Foo { int dummy; }; int tryToAllocateFoo(Foo ** dest); ]] local theDll = ffi.load(dllName) local pFoo = ffi.new 'struct Foo *[1]' local ok = theDll.tryToAllocateFoo(pFoo) if ok == 0 then -- Assuming it returns 0 on success print('dummy ==',pFoo[0].dummy) end