gpt4 book ai didi

c - LuaJIT ffi : How to pass array of string to c function

转载 作者:行者123 更新时间:2023-12-04 10:37:16 24 4
gpt4 key购买 nike

我想将存储字符串的 Lua 表传递给 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(数组中的最后一个元素实际上是一个零终止符)。

关于c - LuaJIT ffi : How to pass array of string to c function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com