LuaJIT ffi:如何将字符串数组传递给 c 函数
LuaJIT ffi : How to pass array of string to c function
我想将 Lua table 存储字符串传递给 c 函数。例如,如果我有
tStr = {"String1", "String2", "String3"}
如何传递给 C 函数。我想我必须打电话给 ffi.new 但我不确定是哪种类型..
local cVar = ffi.new("??" , tStr) -- I am not sure what to pass as type
参数
同样在 C 函数中,我不确定如何访问整个数据,它会是指向 string , **str 的字符串指针吗??
void cFunction(**str); --What pointer type should be used here ??
...
如果我错过了一些明显的问题,我深表歉意。但我只是从 Lua & ffi 开始。所以我仍然不知道大部分事情..
这是一个简单的例子:
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(数组中的最后一个元素实际上是 zero-terminator)。
我想将 Lua table 存储字符串传递给 c 函数。例如,如果我有
tStr = {"String1", "String2", "String3"}
如何传递给 C 函数。我想我必须打电话给 ffi.new 但我不确定是哪种类型..
local cVar = ffi.new("??" , tStr) -- I am not sure what to pass as type
参数
同样在 C 函数中,我不确定如何访问整个数据,它会是指向 string , **str 的字符串指针吗??
void cFunction(**str); --What pointer type should be used here ??
... 如果我错过了一些明显的问题,我深表歉意。但我只是从 Lua & ffi 开始。所以我仍然不知道大部分事情..
这是一个简单的例子:
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(数组中的最后一个元素实际上是 zero-terminator)。