问题标签 [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.

0 投票
2 回答
859 浏览

c++ - 如何确定 C++ 用户类型是否已向 tolua 注册

我们使用 tolua++ 为 C++ 类生成 Lua 绑定。

假设我有一个 C++ 类:

和一个具有以下内容的 tolua .pkg 文件

考虑以下函数:

现在,实际的问题:

如果第三个参数不对应于通过调用 tolua_cclass 注册的 C++ 类的有效完全限定字符串,则 tolua_pushusertype 会导致 Lua 中的段错误。所以,如果参数 3 的位置是“Bar”,我们会得到一个段错误。

我想做的是以下几点:

有没有办法使用 tolua 做到这一点?

0 投票
1 回答
345 浏览

c++ - tolua++ 忽略赋值和不等式运算符?

我将 Lua 嵌入到 C++ 类中。

似乎 tolua++ 忽略了我班级的一些重载运算符。

tolua++ 发出以下警告:

  • **tolua++ 警告:不支持 operator=,忽略
  • **tolua++ 警告:不支持 operator!=,忽略

有没有办法解决?

0 投票
1 回答
1568 浏览

c++ - tolua++:将 lua 函数添​​加到已导出到 Lua 的 C++ 类

我正在使用 tolua++ 将一些 C++ 类导出到 Lua。

我的理解是每个类都是在 lua 端“实现”的,作为一个 lua 表。我想知道是否有可能因此向C++对象表添加新的(Lua)方法,这样我就可以达到向C++类添加新方法的效果。

假设我正在导出类 Foobar。

Foobar 的方法可以在 Lua 中访问,如下所示:

等等

我希望能够将新方法(newmethod1 和 newmethod2)添加到 Foobar 表“对象”

我有以下问题:

  1. 是否可以按照我上面描述的方式“扩展”导出的 C++ 对象的功能?
  2. 如何向 Foobar 表添加新功能?(我对 Lua 比较陌生)
0 投票
1 回答
1022 浏览

c - 使用 tolua++ 绑定结构和 ctor/dtor

假设我想将一段代码绑定到 Lua,如下所示:

我想从 Lua 脚本创建这些对象,而不是明确地管理它们的生命周期。最好是,我希望我的脚本写

问题:为了按预期工作,我需要以某种方式告诉 tolua++ bar_create 和 bar_free 是 bar 的构造函数/析构函数。我怎么做?对于类,tolua++ 声称自动使用它们的 ctor/dtor,但是对于结构呢?

我能想到的最好的事情就是对 foo.pkg 的定义:

这意味着我必须明确调用 create() 和 free() 。

0 投票
1 回答
239 浏览

tolua++ - Tolua++ 和 __tostring

这里有人可以帮助我使用 tolua++ 和 __tostring 吗?

如果我尝试在从 C++ 对象绑定的 Lua 对象的元表上设置 __tostring 属性,我会崩溃。

例如

...导致崩溃。

似乎设置已经存在的元表函数,如 __eq,是可以的......而设置一个尚不存在的函数,如 __tostring 或 'foobar' 会导致崩溃。

0 投票
0 回答
293 浏览

parameters - 使用 tolua++ 将表传回 C++

我需要将一个字符串表作为参数从 lua 传递回 C++ 方法,有什么想法可以使用 tolua++ 标记接受该表的方法吗?

0 投票
0 回答
186 浏览

lua - 使用 tolua++ 导航 Lua 类层次结构

我需要在 Lua 中导航表示从 tolua++ 绑定的 C++ 类层次结构的元表层次结构。

例如,假设我在 C++ 中有一个类 CFoo,它已被 tolua++ 绑定。在 Lua 中,我可以创建这个类的一个实例(它变成一个 userdata 类型),如下所示:

我可以通过以下方式获取元表:

我可以按如下方式检查此类的绑定成员:

但是,mt[".get"] 仅包含在此类中显式绑定的成员,而不包含在任何父类中绑定的成员。我需要遍历所有绑定成员,包括父类中的成员。

通过检查 tolua++ 源代码,似乎 tolua++ 在“tolua_super”全局表中保存了超类信息。但目前尚不清楚如何从 Lua 方面进行导航。

0 投票
2 回答
113 浏览

c++ - 在 Lua 中调用 tolua++ 中可能未公开的函数

我有一个使用我的 C++ 应用程序的一些功能的 Lua 脚本。我将此脚本与 2 个不同的 C++ 应用程序一起使用,并且我希望能够保护未通过 tolua 绑定的调用。

例如: - 假设我有两个 C++ 应用程序:MyApp1 和 MyApp2 - 我用 tolua++ 制作了 MyApp1 的包装器,并在 Lua 脚本中调用它的一个函数:

现在我在 MyApp2 中使用相同的脚本,它没有任何这种类型的 tolua++ 绑定。然后我得到这种类型的错误:

[string "MyApp2.lua"]:157: 尝试索引全局 'MyApp1' (一个 nil 值)

所以我希望 Lua 在调用这个方法时不要给我一个错误。我尝试使用:

但是脚本一直在这条线上崩溃。

0 投票
1 回答
1079 浏览

c++ - tolua++ 从 C++ 代码调用 Lua 函数

我正在尝试使用 tolua++ 库将 Lua 脚本嵌入到我的 c++ 应用程序中。我很清楚,如何将 C++ 类绑定到 Lua,从 Lua 脚本创建它们并调用方法。但是,我无法真正了解如何从 C++ 调用 Lua 脚本函数(通过传递参数和获取返回值)。

你能说一下使用 tolua++ 的标准方法吗?tolua++ 是否涵盖了这一点,或者我必须使用 Lua C Api?

0 投票
1 回答
808 浏览

lua - getpeer 和 setpeer 的含义

在 cocos2dx 示例中,有这样的代码:

setpper 和 getpeer 有什么用?