问题标签 [luabridge]

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 投票
1 回答
62 浏览

luabridge - luabridge 绑定 C++ 成员,但不更改成员值

我有一个使用 luabridge 的问题,它更改 C++ 值失败,例如:

//c++文件

绑定代码如下:

lua 文件如下:


现在我的问题是为什么 eta.coor3D_1.lon = 11 不起作用?我发现那个双“。” 不管用....

0 投票
1 回答
805 浏览

c++ - 从 LUA 脚本调用 C++ 类函数

我正在尝试学习如何使用 lua/luabridge 来调用类的成员函数,但我遇到了一些麻烦:

这是一个简单的测试类:

以及使用它的代码:

最后,lua 脚本:

这里可能有几个错误,但具体来说,我想做的是proxy从 lua 脚本调用实例的成员函数,就好像我在调用:

我知道有很多类似的问题,但到目前为止我还没有找到直接回答我的问题。

目前脚本甚至没有加载/执行,所以我有点困惑。

0 投票
1 回答
340 浏览

c++ - Luabridge 绑定重载运算符

我编写了一个简单的 vec3 类,它实现了 */+- 运算符:

我希望通过 luabridge 绑定这些运算符,在某种程度上类似于:

这样我就可以像这样调用lua中的函数:

当我在 vec3 类的 *operator 中放置断点时,它确实命中了它,但 rhs 浮点数未定义。

如果我将lua代码更改为:

那么 rhs vec3 也是未定义的。所以看起来参数没有被正确传递。

然后我将注册更改为:

但是现在vec3的成员数据,或者float参数是未定义的。如果我越过这个断点,luabdridge 会抛出以下异常:

我唯一能想到的是我没有正确注册该功能。

所以我的问题是这样的:如何正确绑定运算符,并确保参数类型正确,以及如何在lua中正确调用它?

0 投票
0 回答
111 浏览

c++ - 向 lua 公开正确的工厂类

所以我正在编写一个工厂系统来创建对象并使用 lua 来调用它们。但是我正在努力弄清楚如何使用 luaBridge 将它们暴露给 lua。

我有一个模板工厂:

注册函数调用从虚拟创建派生的继承模板创建类,以创建从基对象派生的特定类型的对象。

在 C++ 中,工厂是这样使用的:

我是否必须将 BaseObject 和 BaseCreator 等虚拟基类公开给 lua,以便我使用 lua 创建它们的派生类型?我已经尝试过了,但在创建抽象对象时出现错误。如果我必须公开低音类,或者是否有另一种更适合处理此任务的脚本语言,有没有办法解决这个问题?

0 投票
1 回答
1031 浏览

c++ - 使用 LuaBridge 或 Lua 将 C++ 对象传递给 Lua 函数

我有一个用 C++ 构造的大对象(我已经暴露给 Lua),我想在 Lua 中处理。

我可以使用 将任何简单类型传递给 Lua 函数 ( int, string) lua_pushintegerlua_pushstring但不能使用 C++ 类。我尝试lua_pushlightuserdata过将指针推送到我的对象,但没有运气。

我怎样才能做到这一点?这甚至可能吗?

请注意,我想将一个用 C++ 构造的特定实例传递给 Lua。我可以公开构造函数并简单地使用类,但我需要使类成为单例。这是不可接受的。

0 投票
1 回答
359 浏览

c++ - 使用 LuaBridge 将 LuaJIT 绑定到 C++ 会导致“PANIC: unprotected error”

Windows 10 x64、MSVC 2017、LuaJIT 2.0.5。

我在网上搜索,但答案没有帮助。

基本上我正在尝试遵循本手册,除了我必须#include <LuaBridge.h>在 Lua 包含之后放置,因为否则说 LuaBridge 应该在 Lua 包含之后是行不通的。

但是,我收到以下错误:PANIC: unprotected error in call to Lua API (attempt to call a nil value).

我不知道为什么。如果您需要更多信息 - 请说什么。

脚本.lua:

0 投票
0 回答
88 浏览

c++ - 没有“luaL_openlibs(L)”,Luabridge 无法工作

如果没有以下行,我将无法使用 luabridge:

而且我什至不使用它的库函数。

我收到此错误:

断言失败:lua_istable (L, -1)

只是我添加了“luaL_openlibs(lState)”,没有出现任何问题,但我不想使用 lua 的库并想确保它们不被包含在内。

我的主要功能:

0 投票
0 回答
231 浏览

c++ - 使用 LuaBridge 和 C++ 处理 Lua 模块时出错

我无法在另一个 Lua 文件中包含一个 Lua 文件。我正在使用 C++ 和 LuaBridge 编译 Lua。这是我的主要功能。非常非常小。

这是我的“script.lua”文件:

以及位于 SAME 目录中的“mymath.lua”。

该程序只是崩溃。只需删除 "mymathmodule = require("mymath")" 行就不会出错。这里有什么问题??

0 投票
2 回答
151 浏览

c++ - 如何在没有变量问题的情况下加载多个脚本

我有一个类,我用它来阅读 Lua,我想制作它,以便您可以一次加载多个脚本并且不冲突,即 Lua 变量的值在执行另一个脚本时保存在第一个脚本中。

我希望程序输出它-

但她拿出来——

这是我的代码:

我正在使用 Luabridge

0 投票
0 回答
248 浏览

c++ - 更改 lua_thread 的 _ENV(使用 C API)

这适用于多人游戏,其中 NPC 脚本将作为函数块加载并缓存在单个 lua_State 上,然后每次玩家与 NPC 交互时,都会创建一个新的 lua_thread,从全局 lua_table 获取缓存的函数并推送到线程的堆栈上,然后线程被恢复(npc 脚本在完成之前产生了几次)。

我正在尝试使用 C API 更改 lua 线程的环境,以便已加载/运行的函数将无法更改全局变量/让它们被运行在不同线程上的其他函数更改。

通过将此代码添加到脚本的开头,我通过更改函数环境实现了预期的结果。但是,我想使用 C API 端来执行此操作,这样我就不必将此代码粘贴到每个脚本中。

示例代码 + 所需/当前输出

npcA.lua

npcB.lua

我希望 npcA 打印

和那个 npcB 打印

当前的输出是(这不是我想要的)

如果 npcA 先运行 npcB 将打印

如果 npcB 先运行然后让步,则 npcA 运行,然后 npcB 恢复。npcB 会打印

这是有问题的