在LUA FFI中传递指向int的指针

我有一个C函数如下所示

ffi.cdef[[

typedef struct {
    int index;
    char name[10];
} entry_key_t;

extern entry_t *lookup_entry(entry_key_t *key, int *err);

]]

我在传递"int *"时遇到了麻烦,我尝试了以下变体,

local err_val = ffi.new("int[1]") local err_val = ffi.new("int *")

程序崩溃了,因为传递给函数的"err"为空。 (请注意,我能够在执行ffi.new(“entry_key_t[1]”)后传递指针'key')

我错过了什么?我正在使用LuaJIT 2.0.2。

点赞
用户2279620
用户2279620

不确定这是否适用于您,但我用于输出参数的模式是:

local intPtr = ffi.typeof"int[1]"

local key = ffi.new("entry_key_t[1]")
local err = intPtr()

lookup_entry(key,err)

print(err[0])
2014-01-23 12:56:18