问题标签 [lua-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
144 浏览

c++ - Adding lua source to project giving linker error

I've added the lua source to my DLL project (removed lua.c and luac.c). I have the below code as a DLL project in VS and I'm getting a lua_createtable() linker error (lua_newtable() is a macro that calls lua_createtable()). What's odd is lua_createtabel() is defined in lapi.c which an .obj is getting generated so not really sure why I get the linker error.

0 投票
1 回答
2136 浏览

lua - 检测到多个 Lua VM

我使用的是 Lua52.exe 二进制文件,你可以从 Lua 的网站下载。我想用我写的 DLL 扩展它的功能。因此,我编写了一个 DLL,其中我将 Lua 源代码包含到了我的 VS DLL 项目中。该代码如下。当我在通过 Lua52.exe 运行的 lua 文件中执行以下操作时,我收到错误“检测到多个 Lua VM”。所以 Lua52.exe 带有 lua52.dll 所以我假设它是动态链接的,当它启动时它会加载 lua52.dll 来启动一个 lua VM。当我的 DLL 被加载时,我怀疑传入的 lua_State 来自 lua52.exe。VM在谈论什么?我必须在我的 DLL 中动态链接到 lua 吗?我可以让我的 DLL 不以某种方式创建一个 lua 虚拟机吗?我的意思是我不是自己做的,所以 lua 源中的某些东西必须是。

0 投票
1 回答
304 浏览

c++ - Lua and C++ Binding - 这行是什么意思?

下面的代码是将一个 C++ 类绑定到 Lua。

上面的代码来自对这个问题的回答。它将一个 C++ 类(Person)绑定到 Lua。如您所见,此功能

创建一个新的用户数据并将其推送到堆栈顶部。将人员指针存储在用户数据中。

使用名为“PersonMetaTable”的 luaL_newmetatable 创建一个元表,现在元表应该在堆栈的顶部。

根据文档,该lua_pushvalue函数将给定索引处的元素复制到堆栈顶部。但是在这里,使用参数-1调用该函数,我认为它复制了元表(因为它位于堆栈的顶部),对吗?

为什么要复制元表?这条线的目的是什么?

0 投票
1 回答
87 浏览

c - 从同一表字段调用 C 函数时获取表作为自动参数

我有几个全局整数变量,例如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们中的每一个都包含唯一的数值。
在脚本中,用户使用此别名操作设备引脚:

这会调用相应的 C 函数。我认为它太像 C 并且不是很方便。更好的是调用 A0.hi()、A0.low()、A0.set(1) 等方法。
所以我尝试将 A0 和其他方法声明为 C 中的表(只是一个结构):

我可以创建一个像hi这样的文件并使用 lua_pushcfunction 注册它。但是当我调用 A0.hi() 时,在 C 端我将无法访问调用它的表以获取另一个字段。正如我在谷歌上搜索的那样,没有办法从 C 中获得类似self的东西。有没有办法完成它?我不想将表本身作为参数传递,例如A0.hi(A0)
可能有很多别名,它们可以以不同的方式命名。
或者可能有不同的方法来实现相同的目标?

0 投票
1 回答
497 浏览

c - Lua table of string values as parameter in C function

I want to make a C function that takes a lua table with strings as parameter, and the lua table does not have any keys, just values. How can I do this? I cannot figure it out. I did not find anything when I searched in google.

0 投票
1 回答
1428 浏览

c++ - C++ Lua 从 Lua 表中获取价值

我正在尝试从 Lua 表中获取值。这是我在 Program.cpp 中写的:

我在 Script.lua 中写了这个:

问题是这只在控制台中写入 0。我检查了 lua 文件是否正确加载。我究竟做错了什么?

0 投票
1 回答
85 浏览

lua - addEventListner 在 Lua 中不起作用

这是我的代码中的相关函数,我收到以下错误:

堆栈回溯:

我的代码:

这里有什么问题 ?

0 投票
0 回答
296 浏览

lua - 如何在lua中读取表格

我有一个如下表。

我想读取该表并说明读取了多少值,我在下面的代码中遇到的问题越多,读取 PANIC 时总是出现以下错误:调用 Lua API 时出现不受保护的错误

我使用的是lua 5.2,错误在这里指出

有人可以帮我读一下吗,我是lua的新手。

0 投票
1 回答
4324 浏览

c - 使用 Lua C API 迭代表

我正在尝试遍历 Lua 中的表并输出:

  • 每个表的键。
  • 每个表中每个条目的键/值对。

这是代码:

这是我要输出的表之一的示例:

该函数在该行中崩溃:

由于索引无效。导致崩溃的脚本行是:

我不得不承认我对 Lua 中的堆栈并不十分熟悉,我尝试过寻找类似的答案,但找不到任何答案。有人知道我在做什么错吗?

谢谢!

如果有人感兴趣,添加了工作版本:

0 投票
1 回答
848 浏览

c++ - Lua 将表传递给函数,修改它并在 C++ 中取回它

我正在尝试在我的程序中添加功能,我将 C++ 结构传递给 Lua 函数,让它使用它,然后将其设置回 C++ 程序。

卢阿函数:

C++ 函数:

所以我最终得到了这个:

但我不知道我怎么能做到这一点,这可能吗?