使用 lua 与 c++ dll

我开始使用 C++ dll 与 lua 一起编程,但是起步非常困难,我需要帮助处理表格。在我的 C++ 代码中执行以下操作:

static int forLua_AddTwoNumbers(lua_State *L) {
    double d1 = luaL_checknumber(L, 1);
    double d2 = luaL_checknumber(L, 2);
    lua_pushnumber(L, d1 + d2);
    return(1);
}

在 lua 中调用此函数:

r = runfast.AddTwoNumbers(2, 5)

它可以运行,但我该如何处理像这样的表格:

lua table t={1=20, 2=30, 3=40}
点赞
用户2796594
用户2796594

我假设你在询问如何将数组中所有值相加?

static int forLua_SumArray (lua_State* L) {
    // 获取表的长度(与 Lua 中的 # 运算符相同)
    int n = luaL_len(L, 1);
    double sum = 0.0;

    // 对于从 1 到 n 的每个索引,将表中的值作为数字获取并加到 sum 中
    for (int i = 1; i <= n; ++i) {
      lua_rawgeti(L, 1, i);
      sum += lua_tonumber(L, -1);
      lua_pop(L, 1);
    }

    lua_pushnumber(L, sum);
    return 1;
}

顺便提一句,在 Lua 中,t={1=20, 2=30, 3=40} 可以更简单地写成 t={20, 30, 40}。这是编写数组的常见方法。

你可能还想看一下手册中关于求和可变参数示例代码。几乎与我们在这里做的相同,只是你可能更喜欢传递多个参数而不是使用表。

2018-08-23 20:33:06