我试图弄清楚Lua和C之间的交互,其中C函数接受多个输入,其中一个是Lua数组。StackOverflow上的其他文章只介绍了传入C的数组,其中C代码使用-1
来索引数组。
**注1:**我不是LuaMaven。
**注2:**我提到其他职位不包括指数的复杂性。我在下面提供了一个解决方案,它涵盖了它,并使它清楚。不要在没有理解整个上下文的情况下标记它。许多人可能不喜欢我的Note 2,但许多用户知道标记是一个问题。
Lua
name = "id string"
random_array = {1.2, 1.3, 1.4}
c_function(name, random_array, 3) -- 3 is the size of array.
C
static int c_function(lua_State* L)
{
const char* name = luaL_checkstring(L, 1);
int size = luaL_checkinteger(L, 3);
double data[size];
// How do I get array values from 'L' into 'data'?
Calculate(name, data, size);
return 0;
}
void Calculate(const char* name, double* data, int size)
{
// Existing function which acts on the data.
// This function cannot change.
}
1条答案
按热度按时间2fjabf4q1#
根据@Barmar提供的链接和一些玩耍,下面是一个工作解决方案,任何人谁可能遇到这个问题。要使索引正确,需要一些反复试验,所以希望这能在未来节省人们的时间。基于Lua 5.4:
Lua
C/C++