我想将存储字符串的Lua表传递给c函数。所以,例如,如果我有
tStr = {"String1", "String2", "String3"}
如何传递给C函数。我想我必须打电话给ffi.new,但我不确定哪种类型..
local cVar = ffi.new("??" , tStr) -- I am not sure what to pass as type
参数
同样在C函数中,我不知道如何访问整个数据,是否指向字符串的字符串指针,** str ??
void cFunction(**str); --What pointer type should be used here ??
... 如果我错过了一些明显的问题,请道歉。但我刚开始使用Lua& FFI。所以我仍然没有意识到大部分事情......
答案 0 :(得分:2)
这是一个简单的例子:
local ffi = require"ffi"
ffi.cdef"int execvp(const char*file, const char**argv);"
local arg = ffi.new("const char*[3]", {"ls", "-l"})
ffi.C.execvp(arg[0], arg)
请注意常数3(数组的大小)
等于2(从Lua传递的字符串数{"ls", "-l"}
)
加1(数组中的最后一个元素实际上是零终止符。)