如何通过LuaJIT ffi将指针作为输出参数传递?
- 内容介绍
- 文章标签
- 相关推荐
本文共计172个文字,预计阅读时间需要1分钟。
LuaJIT中操作C结构体的示例代码如下:
lua-- 假设存在以下C代码定义的结构体:-- struct Foo {-- int dummy;-- };
-- 尝试分配Foo结构体的内存local function tryToAllocateFoo(dest) -- 这里是C代码的分配逻辑,具体实现取决于实际环境end
-- 初始化Foo指针local pFoo=niltryToAllocateFoo(pFoo)
-- 使用ffi库定义C结构体local ffi=require('ffi')ffi.cdef[[struct Foo { int dummy;}]])
-- 使用定义的结构体local t=ffi.new(struct Foo)
假设有以下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
本文共计172个文字,预计阅读时间需要1分钟。
LuaJIT中操作C结构体的示例代码如下:
lua-- 假设存在以下C代码定义的结构体:-- struct Foo {-- int dummy;-- };
-- 尝试分配Foo结构体的内存local function tryToAllocateFoo(dest) -- 这里是C代码的分配逻辑,具体实现取决于实际环境end
-- 初始化Foo指针local pFoo=niltryToAllocateFoo(pFoo)
-- 使用ffi库定义C结构体local ffi=require('ffi')ffi.cdef[[struct Foo { int dummy;}]])
-- 使用定义的结构体local t=ffi.new(struct Foo)
假设有以下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

