gpt4 book ai didi

lua - 通过 FFI 将字符串表数组从 C 返回到 LuaJIT

转载 作者:行者123 更新时间:2023-12-01 01:57:20 37 4
gpt4 key购买 nike

我想让 C 函数通过 LuaJIT 将字符串表数组(例如 {"a", "b", "c"} )返回给 Lua 脚本。

哪种方法最好?

我想返回一个带有一些分隔符(例如 "a|b|c" )的单个连接字符串,然后在 Lua 中将其拆分,但我想知道是否有更好的方法。

编辑:我使用 LuaJIT FFI 来调用 C 函数。

最佳答案

我认为最简单的方法是让 C 代码返回一个包含字符串数组和 Lua 长度的结构体,然后编写一些 Lua 来将其具体化为您想要的数据结构。

在 C 中:

typedef struct {
char *strings[];
size_t len;
} string_array;

string_array my_func(...) {
/* do what you are going to do here */
size_t nstrs = n; /* however many strings you are returning */
char** str_array = malloc(sizeof(char*)*nstrs);
/* put all your strings into the array here */
return {str_array, nstrs};
}

在卢阿:
-- load my_func and string_array declarations
local str_array_C = C.ffi.my_func(...)
local str_array_lua = {}
for i = 0, str_array_C.len-1 do
str_array_lua[i+1] = ffi.string(str_array_C.strings[i])
end
-- str_array_lua now holds your list of strings

关于lua - 通过 FFI 将字符串表数组从 C 返回到 LuaJIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468034/

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