0

我有一个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 *”时遇到问题,我尝试了以下变体,

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

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

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

4

1 回答 1

2

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

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-23T12:56:18.843 回答