问题标签 [tolua++]
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++ 用户类型是否已向 tolua 注册
我们使用 tolua++ 为 C++ 类生成 Lua 绑定。
假设我有一个 C++ 类:
和一个具有以下内容的 tolua .pkg 文件
考虑以下函数:
现在,实际的问题:
如果第三个参数不对应于通过调用 tolua_cclass 注册的 C++ 类的有效完全限定字符串,则 tolua_pushusertype 会导致 Lua 中的段错误。所以,如果参数 3 的位置是“Bar”,我们会得到一个段错误。
我想做的是以下几点:
有没有办法使用 tolua 做到这一点?
c++ - tolua++ 忽略赋值和不等式运算符?
我将 Lua 嵌入到 C++ 类中。
似乎 tolua++ 忽略了我班级的一些重载运算符。
tolua++ 发出以下警告:
- **tolua++ 警告:不支持 operator=,忽略
- **tolua++ 警告:不支持 operator!=,忽略
有没有办法解决?
c++ - tolua++:将 lua 函数添加到已导出到 Lua 的 C++ 类
我正在使用 tolua++ 将一些 C++ 类导出到 Lua。
我的理解是每个类都是在 lua 端“实现”的,作为一个 lua 表。我想知道是否有可能因此向C++对象表添加新的(Lua)方法,这样我就可以达到向C++类添加新方法的效果。
假设我正在导出类 Foobar。
Foobar 的方法可以在 Lua 中访问,如下所示:
等等
我希望能够将新方法(newmethod1 和 newmethod2)添加到 Foobar 表“对象”
我有以下问题:
- 是否可以按照我上面描述的方式“扩展”导出的 C++ 对象的功能?
- 如何向 Foobar 表添加新功能?(我对 Lua 比较陌生)
c - 使用 tolua++ 绑定结构和 ctor/dtor
假设我想将一段代码绑定到 Lua,如下所示:
我想从 Lua 脚本创建这些对象,而不是明确地管理它们的生命周期。最好是,我希望我的脚本写
问题:为了按预期工作,我需要以某种方式告诉 tolua++ bar_create 和 bar_free 是 bar 的构造函数/析构函数。我怎么做?对于类,tolua++ 声称自动使用它们的 ctor/dtor,但是对于结构呢?
我能想到的最好的事情就是对 foo.pkg 的定义:
这意味着我必须明确调用 create() 和 free() 。
tolua++ - Tolua++ 和 __tostring
这里有人可以帮助我使用 tolua++ 和 __tostring 吗?
如果我尝试在从 C++ 对象绑定的 Lua 对象的元表上设置 __tostring 属性,我会崩溃。
例如
...导致崩溃。
似乎设置已经存在的元表函数,如 __eq,是可以的......而设置一个尚不存在的函数,如 __tostring 或 'foobar' 会导致崩溃。
parameters - 使用 tolua++ 将表传回 C++
我需要将一个字符串表作为参数从 lua 传递回 C++ 方法,有什么想法可以使用 tolua++ 标记接受该表的方法吗?
lua - 使用 tolua++ 导航 Lua 类层次结构
我需要在 Lua 中导航表示从 tolua++ 绑定的 C++ 类层次结构的元表层次结构。
例如,假设我在 C++ 中有一个类 CFoo,它已被 tolua++ 绑定。在 Lua 中,我可以创建这个类的一个实例(它变成一个 userdata 类型),如下所示:
我可以通过以下方式获取元表:
我可以按如下方式检查此类的绑定成员:
但是,mt[".get"] 仅包含在此类中显式绑定的成员,而不包含在任何父类中绑定的成员。我需要遍历所有绑定成员,包括父类中的成员。
通过检查 tolua++ 源代码,似乎 tolua++ 在“tolua_super”全局表中保存了超类信息。但目前尚不清楚如何从 Lua 方面进行导航。
c++ - 在 Lua 中调用 tolua++ 中可能未公开的函数
我有一个使用我的 C++ 应用程序的一些功能的 Lua 脚本。我将此脚本与 2 个不同的 C++ 应用程序一起使用,并且我希望能够保护未通过 tolua 绑定的调用。
例如: - 假设我有两个 C++ 应用程序:MyApp1 和 MyApp2 - 我用 tolua++ 制作了 MyApp1 的包装器,并在 Lua 脚本中调用它的一个函数:
现在我在 MyApp2 中使用相同的脚本,它没有任何这种类型的 tolua++ 绑定。然后我得到这种类型的错误:
[string "MyApp2.lua"]:157: 尝试索引全局 'MyApp1' (一个 nil 值)
所以我希望 Lua 在调用这个方法时不要给我一个错误。我尝试使用:
但是脚本一直在这条线上崩溃。
c++ - tolua++ 从 C++ 代码调用 Lua 函数
我正在尝试使用 tolua++ 库将 Lua 脚本嵌入到我的 c++ 应用程序中。我很清楚,如何将 C++ 类绑定到 Lua,从 Lua 脚本创建它们并调用方法。但是,我无法真正了解如何从 C++ 调用 Lua 脚本函数(通过传递参数和获取返回值)。
你能说一下使用 tolua++ 的标准方法吗?tolua++ 是否涵盖了这一点,或者我必须使用 Lua C Api?
lua - getpeer 和 setpeer 的含义
在 cocos2dx 示例中,有这样的代码:
setpper 和 getpeer 有什么用?