LuaJIT ffi:如何将字符串数组传递到C函数中

我想要将存储字符串的Lua表传递到C函数中。例如,如果我有

tStr = {"String1", "String2", "String3"}

我应该如何传递到C函数?我认为我必须调用ffi.new,但我不确定要传递什么类型

local cVar = ffi.new("??" , tStr)  --我不确定应该传递什么类型

参数

还有,在C函数中,我不确定如何访问整个数据,它将是指向字符串的字符串指针,**str吗?

void cFunction(**str); --这里应该使用什么指针类型??

... 如果我忽略了一些显而易见的问题,我道歉。但我刚开始使用Lua和ffi,所以我还不熟悉大部分事情..

点赞
用户6834680
用户6834680

这是一个简单的示例:

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(数组中的最后一个元素实际上是零终止符)。

2017-01-19 09:20:19