问题标签 [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 投票
2 回答
1056 浏览

c++ - LuaBridge 没有正确创建构造函数

我使用 LuaBridge 将一些类和函数移植到 Lua。我目前正在调试,我总是得到

这是 main.lua :

这是 TexVector 的初始化代码:

AFAIK 是 :new Lua-“类”的构造函数。初始化或 Lua 脚本有问题吗?

0 投票
1 回答
2568 浏览

c++ - LuaBridge 和成员函数

我今天刚刚下载 了 LuaBridge,到目前为止对它非常满意。我注意到的一件事是,我能够规避将 lua_State 作为函数参数的正常要求。

我可以做这个:

它会工作得很好,但如果我做任何事情:

我在文档中读到的任何内容都没有表明无法注册具有非 lua_State 参数的成员函数,而且我已经看到一些 LuaBridge 代码可以毫无问题地做到这一点。我在这里做错了什么?

0 投票
2 回答
483 浏览

c++ - Lua OOP 函数没有被调用?

我在 Allegro 5 中使用 Lua 和 LuaBridge。我决定将所有图形对象移植到 Lua,但遇到了一些问题:

被调用一次的字符类

从主程序调用函数的 Lua 脚本:

所以基本上,脚本用适当的坐标和图像初始化角色,并绘制它,但要么没有调用逻辑(它在逻辑循环中),要么改变 X 坐标的函数有问题。

此外,任务管理器建议每个周期存在约 30 KB 的内存泄漏,当我在 C++ 中使用图像对象时没有发生这种情况。

下面是通过 LuaBridge 导出到 Lua 的 Bitmap 结构的片段,以备不时之需:

更新:我能够弄清楚的一件事是内存泄漏来自CoreLogic;我在 C++ 中注释掉了对它的调用,内存泄漏消失了,但是当我保持调用不变,但注释掉CoreLogic的内容时,泄漏仍然存在。嗯……

第二次更新:内存泄漏已被缩小到与人工智能有关的东西,我没有发布:

CoreLogic函数中,它会调用Foo.AI:DoBehavior(),这完全没有做任何事情并导致内存泄漏。

0 投票
2 回答
875 浏览

c++ - 使用带有指向内置类型的指针的 LuaBridge

让我们考虑以下 C 函数:

如何使用 LuaBridge 在 Lua 中公开它?所有文档和示例都说明了指向对象是类的复杂情况,但我找不到如何处理这样一个简单的情况......

简单的方法(即luabridge::getGlobalNamespace(L).addFunction("test", &returnMultipleValuesByPointer))编译但不理解将通过地址传递的值。

0 投票
1 回答
1422 浏览

c++ - LuaBridge 回调(将 lua 函数传递给 c++)

如何使用 Luabridge(1.0.2) 将函数从 LUA 传递到 C++

然后将该回调传递给 c++:

“点击”是 const std::string&,但是如何将回调定义为函数?我尝试了一些方法(void*,std::function),但这些方法都不能正常工作。

0 投票
1 回答
1702 浏览

c++ - Luabridge:返回 C++ 生命周期托管对象

此剪辑适用于基本类型:

在 lua 中它看起来像这样:

我将如何返回类而不是 ints

似乎无法正常工作,lua 部分如下所示:

错误是:

0 投票
1 回答
705 浏览

c++ - Luabridge:删除时堆损坏(_CrtIsValidHeapPointer)

编辑#3:

我的引擎是按以下方式设置的:

然后我用下面的方式写了几个lua接口:

Engine 中的游戏循环将循环通过 DisplayObject 并执行各种任务。当 LUA 调用 RemoveDisplayObject() 时,会发生 _CrtIsValidHeapPointer。

我们正在删除 LUA 对象之外的项目,这会导致问题吗?

什么会导致堆错误?我应该以不同的方式处理这个问题吗?


这是引擎中的逻辑:

游戏(单人)

包含DisplayObjects( 的向量DisplayObject)

Lua 绑定类:

调用Game::Singleton CreateDisplayObject,获取指向最后一个对象的指针DisplayObjects

具有从<----调用和传递指针的Remove()函数这会导致堆损坏(调用 vector.clear() 时)。因此从向量中删除项目会导致堆错误。Game::Singleton RemoveDisplayObjectCreateDisplayObject

有一些额外的功能,可以DisplayObject像移动它一样工作,没有堆损坏。

卢阿:

另一个包装 Lua 绑定类的类

包含Remove()调用Lua 绑定类 Remove()的函数

在某一时刻,引擎将加载一个额外的 lua 文件,该文件在 lua 类上调用 Remove()。

0 投票
1 回答
1157 浏览

c++ - Luabridge 对 LuaRef 数据的弱引用

考虑以下示例:

在 luabridge 中,我存储了function()as LuaRef,它延长了 the 的生命周期,Container它不会被 GCed,因为它是RefCountedObjectPtr

这是我用来使用弱表的解决方法,但它看起来很难看:

有什么办法可以实现LuaRef类似的功能吗?或者也许还有另一种解决方法?

0 投票
1 回答
742 浏览

c++ - 无法修改传递给 lua 的对象

考虑以下使用LuaBridge将对象传递给 lua 脚本的示例:

显然传递的变量不能被lua修改:

上面的代码打印10

同样在处理脚本后的 C++ 中,变量仍然保持其初始值。

但是,可以修改不是对象成员的简单标量数据类型(如浮点数) 。我错过了什么吗?


编辑:Test t1(10);如果我替换为Test *t1 = new Test(10);或什Test t(10); Test *t1 = &t;至并且仍然传递&t1给 addVariable ,它显然是可修改的。我不太了解这种行为,有人可以解释一下吗?(地址的地址?)

0 投票
1 回答
845 浏览

c++ - LuaBridge 和继承

我正在尝试使用 LuaBridge 通过基类指针将对象从 C++ 传递到 Lua。派生类和基类都已正确注册到 LuaBridge。

在 C++ 方面:

在 Lua 方面:

我如何在 Lua 中从FooBase*to 'cast-down'?Foo*Lua/LuaBridge 甚至支持这个吗?