问题标签 [luabind]

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 回答
3055 浏览

c++ - 在 C++ 中获取指向 Lua 对象实例的指针

我正在使用Luabind将基类从 C++ 公开到 Lua,我可以从中派生 Lua 中的类。这部分工作正常,我可以从 Lua 中的派生类调用 C++ 方法。

现在我想做的是在我的 C++ 程序中获得一个指向基于 Lua 的实例的指针。

C++ -> 绑定

基于 Lua 的派生类

现在假设我从 Lua 创建了以下对象:

如何获取该对象的引用作为 C++ 中基类的指针?

0 投票
2 回答
2431 浏览

c++ - Luabind 函数使用 std::string& 引用和 pure_out_value 策略不可能?

我正在尝试从函数返回一个字符串,但它没有编译。当我用 int& 替换 std::string& 类型时,它会编译,但是我想另外返回布尔值 std::string 我该怎么做?

...

在 lua 中:

我正在使用 luabind 0.8.1,最新的 Lua,boost 1.4,VC++ 2008

我收到以下编译器错误(似乎无法确定 std::string& 的大小?


0 投票
2 回答
2670 浏览

memory-leaks - Lua 中丢失的引用

对象有问题,不再需要但仍然有引用。结果:由于未收集对象,分配的内存大小不断增长。

如何解决此类问题?有没有办法找到只有一个引用的对象,或者生命周期超过某个值的对象?或者任何其他解决方案?

将 Lua 5.1 和 C++ 与 luabind 一起使用。

谢谢。

0 投票
1 回答
598 浏览

c++ - luabind::object 解引用的问题(简化)

使用C++lua5.1luabind 0.7

卢阿代码:

C++ 代码:

结果:Lua 仍然有 8Mb 分配的内存。垃圾收集会忽略该表对象。它在任何地方都有参考?但是哪里?该表仅在程序退出时解除分配(当调用“lua_close”函数时)。如何解决这个问题呢?

谢谢你。

0 投票
2 回答
2053 浏览

c++ - 在 luabind::object 中存储带有父级的 lua 类

使用C++lua 5.1luabind 0.7-0.81

尝试创建一个带有父级的 lua 类并将其存储在 luabind::object 中。

卢阿

C++

输出: GC 之后的
init
parent init
before GC

结果: obj 被销毁后,'TestClass' 实例在垃圾回收周期后仍然存在(不调用 __finalize 方法并且不释放内存)。它仅在程序退出时破坏。
如果我在没有父级的情况下使用类,垃圾会被正确收集。

如果我尝试使用采用策略(获取创建对象的所有权)

我得到:

  • luabind 0.7 - 与没有采用策略的结果相同
  • luabind 0.81 - 崩溃并显示消息“您正在尝试使用 unregistrerd 类型”

如何在 C++ 中正确创建一个 lua 对象并获得它的所有权

0 投票
1 回答
923 浏览

scripting - Luabind 类派生问题(内存“泄漏”)

使用luabind 0.81

简单的测试来说明问题:

1)

输出:
A init
A finalize

2)

输出:
A 初始化
B 初始化

问题:垃圾回收时没有删除带有父类的类。

如何解决这个问题呢?谢谢你。

0 投票
1 回答
779 浏览

c++ - Access violation when exporting a C++ class to Lua using LuaBind

I'm trying to export a simple class to Lua using LuaBind. I took the code from two sites which showed roughly the same way to do it, but it's still failing.

When running that code, luabind::module causes the following runtime error and has no other information in debug mode:

Unhandled exception at 0x690008f5 in Lua Playground.exe: 0xC0000005: Access violation.

0 投票
1 回答
2598 浏览

c++ - default_converter 和表的 luabind 问题

===编辑===

问题实际上比这简单得多,任何采用表的包装函数都会导致问题。如果我包装一个采用 luabind::object 的函数,并使用表参数调用该函数,那么 gc 会导致无效的 free()。我开始认为这可能是某种疯狂的编译/链接问题,因为我编译的 luabind dylib 中有 lua 符号(导致这些符号的两个副本,一个在该库中,一个在我的二进制文件中)。也许我有一些 lua 静态变量或其他东西的副本?我可能只是在这里抓住稻草。

===编辑===

在 mac os x 10.6 上使用 luabind 0.9 和 gcc 4.2.1

我看到使用 lua 表中的 default_converter 会出现什么问题(也许?)。

我试图在我的代码中为各种类似列表的类型定义转换器,特别是 std::vector。当我使用这样的 default_converter 将表传递给 c++ 方法时,只要调用垃圾收集器,lua 就会在无效指针上使用 free() 崩溃。

我可能在这里遗漏了一些简单的东西,但我无法弄清楚。

谢谢!

* Lua 代码 *

* C++ 代码 *

0 投票
1 回答
656 浏览

lua - Luabind 有条件地调用 Lua 函数

我有一些使用 Luabind 的代码,如果它存在于 _G 表中,我需要执行一个函数(来自 C++),否则什么也不做。如何检测 _G 中是否存在函数?

0 投票
1 回答
935 浏览

c++ - 如何使用 Luabind 和 C++ 创建资产管理类?

我已经做了无数次尝试来让它工作,但我所做的一切都会给我运行时错误。我一直在尝试让资产管理器来管理我的游戏引擎的内容,并且我正在使用 lua 和 luabind 来编写脚本。让一切编译,绑定类和变量,以及从 lua 中取回基本变量,到目前为止都没有问题。

我的问题是我正在使用 std::vector 来存储我的资产类的实例,并且向量似乎与 luabind 相处不融洽。我知道我需要这个向量,因为我的 C++ 程序将使用它进行渲染和其他事情

当我绑定我的管理器类和变量(包括包含我的资产类的向量)时,一切都编译并运行良好。在我的 lua 脚本中,我可以成功创建新对象,但是当我尝试访问它们时,出现运行时错误。

总结一切:

我有一个类,其中包含游戏对象的信息或有关其他一些数据的信息。

我有另一个包含资产类向量的类。

当我尝试像访问常规 lua 表一样访问此向量时,出现运行时错误。

那么我应该在 C++ 和 luabind 中做什么才能修改资产管理器类中的类?