Tag: lua

在lua和C之间共享数组

我真的用Google搜索了这个问题,但我从未真正得到过解决方案。 我想在C和Lua之间共享一个数组,为了提高性能,我将避免将数组复制到Lua和从Lua复制数组。 所以我想传递一个指向数组的指针从C到Lua。 然后从Lua我想直接在这个数组中设置/修改值。 C代码中的示例 我想定义我的数组 int mydata[] = {1,2,3,4} 将其设置为全局以从Lua访问它,名称为mydata 。 在Lua 我想改变这样的值 mydata[3] = 9 当我返回C时, mydata[3]为9,因为它是指向数组的指针。 这怎么可能?

通过Lua表迭代

我试图迭代lua表但我不断收到此错误: invalid key to ‘next’ 我知道索引从-8开始,我知道那里有一个表,因为它获得了第一个(也是唯一的)值。 但是,它会尝试再次循环,即使我知道表中只有一个字符串。 if (lua_istable(L, index)) { lua_pushnil(L); // This is needed for it to even get the first value index–; while (lua_next(L, index) != 0) { const char *item = luaL_checkstring(L, -1); lua_pop(L, 1); printf(“%s\n”, item); } } else { luaL_typerror(L, index, “string table”); } 任何帮助,将不胜感激。 当我使用正索引时(只要我不从中删除1),这可以正常工作 编辑:我注意到如果我单独留下项目的值,我就不会收到此错误。 只有当我开始读取item的值时才会出现此错误。 当我从表中获得值时,我调用另一个Lua函数,这可能会破坏lua_next吗?

从C运行luajit对象文件

来自文档: http : //luajit.org/running.html luajit -b test.lua test.obj # Generate object file # Link test.obj with your application and load it with require(“test”) 但是没有解释如何做这些事情。 我猜他们假设任何使用Lua的人也是C程序员,而不是我的情况! 我可以得到一些帮助吗? 以GCC为例。 除了C字节数组头之外,我还想做同样的事情。 我也找不到相关文档。 luajit -bt h -n test test.lua test.h 这会创建头文件,但我不知道如何从C运行它。谢谢。

存储Luafunction?

从C 调用Lua函数是相当简单的,但有没有办法将 Lua函数存储在某处供以后使用? 我想存储传递给我的C函数的用户定义的Lua函数以用于事件,类似于Connect函数在wxLua中的工作方式 。

重定向/重新定义嵌入式Lua的print()

我在我的C ++应用程序中嵌入了Lua。 我想重定向打印语句(或者只是简单地重新定义打印函数?),这样我就可以在其他地方显示已计算的表达式。 执行此操作的最佳方法是:重定向或重新定义print()函数? 任何显示如何执行此操作的片段的片段/指针都将非常感激。