2
我想将用于存储字符串的Lua表传递给c函数。因此,例如,如果我有LuaJIT ffi:如何将字符串数组传递给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开始。所以我仍然不知道大多数的东西..
您可能需要将'{“ls”,“-l”}'锚定到一个变量,所以lua不会过早地提取它。 'const char *'会将一个指针保存在表中的字符串文字中。 – greatwolf
@greatwolf - 一般来说,是的,必须保持对活着的字符串的引用。但是,只要包含它的函数(实际上是它的原型)不被垃圾收集,字符串文字就会自动保持活动状态。 –
这对我有用。另外,我刚刚发现,如果我们不想分配固定大小的数组,那么我们可以使用VLA使用“const char * [?]”语法,然后传递元素的数量。 。 –