问题标签 [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 回答
141 浏览

c - 在 Lua 中使用多个状态或环境更好吗?

我有一个脚本程序,我目前正在为不同的环境使用多种状态,以确保用户和系统脚本不会相互混淆。

对单个上下文使用多个环境的优点/缺点是什么?

0 投票
1 回答
138 浏览

c++ - Lua 参数在错误的内存位置

从 lua 解析变量时,lua 的行为很奇怪。

C++:

路亚:

我从该行得到“0x76C44598 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x00D7F588 处的字符”

当我调试代码并在弹出异常时按继续时,它会将随机变量抛出到变量中。对于double delay.

然而,当我说:

它仍然会给出异常,但会抛出正确的变量。

0 投票
0 回答
278 浏览

c++ - C++/Lua 函数有时将数据写入文件

我在 C++ 中有一个函数可以将数据写入文件:

然后我注册该功能

当我打电话时

它成功地在程序目录中创建了一个空文件并将数据写入其中。问题是我正在使用 WinApi 创建框架(也注册为 lua 函数),但是当我使用时:

里面

函数 SaveFile 被触发,'cout' 正确地告诉我哪些数据被插入到哪个文件中,然后文件被关闭并重新打开以再次读取文件中的数据。所有这一切似乎都完美无缺,但程序目录中没有创建任何文件..

程序位于桌面上。卢阿代码:

0 投票
1 回答
574 浏览

c - 我们应该从 Lua 的 luaL_checkinteger() 等显式转换吗?

Lua 5.3 弃用了 luaL_checkintluaL_checklongluaL_optintluaL_optlong,它们只是方便的宏调用luaL_{check|opt}integer

虽然我们仍然可以使用它们(因为),但用户手册-DLUA_COMPAT_5_2中没有提到它们,我们建议使用“使用类型转换”。luaL_{check|opt}integer

现在,我不是 C 方面的专家,我想知道:

  1. 在以下简单情况下是否需要演员表?

    /li>
  2. 如果这里不需要演员表,在哪里需要

  3. 如果我们可以没有它们,为什么首先会诞生那些已弃用的宏?换句话说:他们提供了什么服务?

  4. 我们不是因为没有在函数名中嵌入“int”/“long”字样而丢失了“文档”吗?

0 投票
0 回答
276 浏览

c - 编译链接器文件以在 Lua 5.2.1 中嵌入 C 代码

如何在 Visual Studio 2010 中为链接器编译文件。

这些是我在 Visual Studio 2010 中使用 Lua 5.2.1 源代码所遵循的步骤:

  1. cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
  2. 用扩展名“.o”重命名“lua.obj”和“luac.obj”,这样它们就不会被选中
  3. 链接 /DLL /IMPLIB:lua5.2.lib /OUT:lua5.2.dll *.obj
  4. 链接 /OUT:lua.exe lua.o lua5.2.lib
  5. lib /OUT:lua5.2-static.lib *.obj
  6. 链接 /OUT:luac.exe luac.o lua5.2-static.lib

从上述所有步骤中,我选择了 lua5.2.lib 并将其添加到链接器中,如下所示:

在此处输入图像描述

当我使用 Dev-C++ 编译以下 C 代码时,它没有给出任何错误,但是当我使用 require 命令从 Lua 调用它时,它说它找不到它。

当我运行这个简单的 Lua 代码时:

错误写道

有什么帮助吗?

0 投票
1 回答
493 浏览

c++ - 带参数的 C++ 和 Lua 集成 (...) (Lua 5.1)

我目前正在尝试将一个函数从 C++ 传递给 Lua。问题是这个函数有一个参数 (int, int, char *, ...)。我对使用 Lua 也很陌生。

因此,我从 lua 堆栈中获取了所有参数,并将相关的 (...) 参数放入一个向量中。现在怎么办?

这是有问题的代码:

这是 PrintW 函数:

这是我将它传递到 Lua 状态的地方。

我希望能够在Lua中这样称呼它,

或者

0 投票
2 回答
897 浏览

c - 如何将 lua_sethook 上下文与 lua_sethook 关联?

我正在尝试为运行 lua 脚本的进程编写调试器,并且记录在案的方法(在 C 中)是使用lua_sethook

lua_Hook定义为:

钩子只得到一个lua_State指针,这很好,但是我怎样才能将指向我的调试器类的指针与它关联起来,以便我可以从那里回到我的调试器类呢?

我想避免在这种情况下使用全局变量,因为我有多个lua_State实例。我想我可以使用lua_State *指向调试器实例的指针映射,但这似乎效率不高。并且将其作为全局存储在 中lua_State *似乎没有意义,因为为了能够检索它,我必须将至少一个值推送到 lua 堆栈上,这在以下情况下似乎很难/不可能做到lua 堆栈溢出。

我错过了什么吗?我将如何做到这一点?我知道,我可以在 lua 代码中完成此操作,但我想了解如何从 C 端执行此操作。

0 投票
1 回答
730 浏览

c++ - 使用lua c API从表中提取用户数据

我使用 lua c api 循环表中的变量,像这样

lua脚本:

lua c api

我可以得到结果

0 1 2 3

然后我想把一些userdata objs放到表中,然后在c api中循环它们

lua脚本

lua c api

如何从表中提取用户数据?请帮助我,谢谢。

0 投票
1 回答
696 浏览

c - 以防弹的方式处理 C 中的 Lua 调用和错误

我在 Lua 电子设备模拟插件上工作。
我想让它在设计和可用性方面做得很好,因为很可能很多用户远离 IT 和调试。
用户在 Lua 中描述设备,插件通过 Lua C API 进行翻译。
用户可能会拼错函数名称、变量类型和参数顺序。
好的手册会有所帮助,但应用程序不应崩溃或提供错误描述的错误。我没有找到任何“最佳实践”并且想询问有经验的用户,因为我对 Lua 还很陌生。

参数的顺序和类型

目前 Lua 函数是这样声明的:

接着

为了检查参数顺序和类型是否正确传递:

创建宏:

将数组添加到列表中:

更改功能列表:

参数列表检查器:

然后我可以检查参数顺序,它们的类型,并可以通过迷你帮助创建相应的错误消息:

该代码不处理额外的参数,但很容易添加。
问题:它是好的场景还是可能有更好的场景?

拼写错误的函数名称

例如我有以下代码:

第二个拼写错误,在这部分之后没有代码被执行。
我不明白如何在 C 中捕获对未定义函数的调用以引发足够的错误。

其他陷阱

也许还有更多我不知道的可能陷阱?

0 投票
0 回答
1320 浏览

c++ - Lua 为 C++ 设置元表函数

我发现了两种实现元表函数的代码。我不太了解第一个,与第二个有什么区别。

首先:

第二个(更清楚):

他们不做同样的工作,但这是单向编程的问题。