我有一个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 *”)
程序崩溃,因为传递给函数的“错误”为NULL。 (请注意,我可以在执行ffi.new(“entry_key_t [1]”)之后传递指针'key')
我错过了什么?我正在使用LuaJIT 2.0.2。
答案 0 :(得分:2)
不确定这对你有用,但我用于params的模式是:
local intPtr = ffi.typeof"int[1]"
local key = ffi.new("entry_key_t[1]")
local err = intPtr()
lookup_entry(key,err)
print(err[0])