问题标签 [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.
c++ - 在 C++ 中获取指向 Lua 对象实例的指针
我正在使用Luabind将基类从 C++ 公开到 Lua,我可以从中派生 Lua 中的类。这部分工作正常,我可以从 Lua 中的派生类调用 C++ 方法。
现在我想做的是在我的 C++ 程序中获得一个指向基于 Lua 的实例的指针。
C++ -> 绑定
基于 Lua 的派生类
现在假设我从 Lua 创建了以下对象:
如何获取该对象的引用作为 C++ 中基类的指针?
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& 的大小?
memory-leaks - Lua 中丢失的引用
对象有问题,不再需要但仍然有引用。结果:由于未收集对象,分配的内存大小不断增长。
如何解决此类问题?有没有办法找到只有一个引用的对象,或者生命周期超过某个值的对象?或者任何其他解决方案?
将 Lua 5.1 和 C++ 与 luabind 一起使用。
谢谢。
c++ - luabind::object 解引用的问题(简化)
使用C++、lua5.1、luabind 0.7
卢阿代码:
C++ 代码:
结果:Lua 仍然有 8Mb 分配的内存。垃圾收集会忽略该表对象。它在任何地方都有参考?但是哪里?该表仅在程序退出时解除分配(当调用“lua_close”函数时)。如何解决这个问题呢?
谢谢你。
c++ - 在 luabind::object 中存储带有父级的 lua 类
使用C++、lua 5.1、luabind 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 对象并获得它的所有权?
scripting - Luabind 类派生问题(内存“泄漏”)
使用luabind 0.81
简单的测试来说明问题:
1)
输出:
A init
A finalize
2)
输出:
A 初始化
B 初始化
问题:垃圾回收时没有删除带有父类的类。
如何解决这个问题呢?谢谢你。
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.
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++ 代码 *
lua - Luabind 有条件地调用 Lua 函数
我有一些使用 Luabind 的代码,如果它存在于 _G 表中,我需要执行一个函数(来自 C++),否则什么也不做。如何检测 _G 中是否存在函数?
c++ - 如何使用 Luabind 和 C++ 创建资产管理类?
我已经做了无数次尝试来让它工作,但我所做的一切都会给我运行时错误。我一直在尝试让资产管理器来管理我的游戏引擎的内容,并且我正在使用 lua 和 luabind 来编写脚本。让一切编译,绑定类和变量,以及从 lua 中取回基本变量,到目前为止都没有问题。
我的问题是我正在使用 std::vector 来存储我的资产类的实例,并且向量似乎与 luabind 相处不融洽。我知道我需要这个向量,因为我的 C++ 程序将使用它进行渲染和其他事情
当我绑定我的管理器类和变量(包括包含我的资产类的向量)时,一切都编译并运行良好。在我的 lua 脚本中,我可以成功创建新对象,但是当我尝试访问它们时,出现运行时错误。
总结一切:
我有一个类,其中包含游戏对象的信息或有关其他一些数据的信息。
我有另一个包含资产类向量的类。
当我尝试像访问常规 lua 表一样访问此向量时,出现运行时错误。
那么我应该在 C++ 和 luabind 中做什么才能修改资产管理器类中的类?