问题标签 [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 回答
152 浏览

lua - 我如何迭代主表下存在的表参数?

在 lua 中,我调用了一个函数,该函数返回一个包含许多内部参数的表变量。但是当我得到该值时,我无法访问表中存在的参数。我可以在原始函数中看到表格参数的形式

[[table:0x0989]] { [[table:0x23456]] str = "hello" width = 180 }, [[table:0x23489]] { str1 = "world" }

它显示如下。但是当它返回一次时,我可以获取表的顶部地址,例如 [[table:0x0989]] ..当我尝试访问主表中存在的表时。它显示 nil 值...我怎么称呼它??谁能帮我??

0 投票
3 回答
1784 浏览

parameters - luabind - 可变数量的参数

如何将函数与接受可变数量参数的 luabind 绑定?基本上,我想编写自己的 print() 函数。

我知道objectluabind 中的类作为参数可以接受任何数据类型,最好是接收一个动态表luabind::object作为参数。

0 投票
1 回答
3289 浏览

c++ - Luabind:“没有找到匹配的重载,候选人:”

注意,我已经阅读并应用了答案:Calling C++ member function from Luabind cause "No matching overload found",但这并没有解决我的问题。

我有一个简单的类,我通过 luabind 向 LUA 公开

这是绑定代码:

这是我的LUA:

但是我得到了标题中提到的错误(这直接取自我的日志文件):

我一直在为此扯头发,看不出我做错了什么。任何人都可以解释一下吗?!:)

0 投票
1 回答
206 浏览

c++ - 如何防止在 Luabind 类中创建新属性?

我正在使用Luabind将 C++ 类绑定到 Lua。从 Lua 脚本中,我可以将任意属性(键/值对)添加到代表我的类的表中,即使我从未告诉 Luabind 这些属性存在:

hippopotamus 行虽然很荒谬,但执行时不会导致 Lua 错误。

如何防止这些新属性?我知道当只使用 Lua C API 时,这可以使用 __newindex 元方法来完成,但是有没有办法用 Luabind 做到这一点?

0 投票
2 回答
639 浏览

c++ - Luabind 中的断言失败

我目前在使用 Luabind 将 Lua 脚本 AI 与 C++ 游戏连接时遇到问题。

我在循环中调用一个更新函数(每帧一次),这个函数从 Luabind 中注册的 C++ 函数中检索信息。

我的问题如下:在可变的、不可预测的时间之后,Luabind 中出现断言失败,导致中止。在 Lua 中下降时,错误总是发生在 /usr/include/luabind/wrapper_base.hpp:124 中。

你有什么想法可以做到这一点吗?对于我的测试,C++ 和 LUA 中调用的函数总是相同的。

有关该问题的更多详细信息:

wrapper_base.hpp 中的断言失败的内容

确切的错误

0 投票
1 回答
2728 浏览

c++ - 在 C++ 中,使用 luabind,调用 lua 文件中定义的函数?

假设我有一个 lua 文件:

我将如何使用 luabind 加载该文件,并调用该函数 - 类似于:

但这会返回一个错误: 在抛出 'luabind::error' what() 的实例后调用终止:lua 运行时错误已中止

那么,做我想做的事情的正确语法是什么?(从错误的外观来看,似乎是 lua 文件中的语法有问题,但我认为不是......)

0 投票
1 回答
1482 浏览

lua - Luabind 和协程

我在理解如何使用 luabind 正确使用协程时遇到了一些麻烦。有一个模板函数:

其中 ( Ret) 应该包含yieldLua 传递给的值。

我目前的困惑点是:

  • 如果函数返回而不是调用会发生什么yield?是否resume_function返回函数的返回值?
  • 如果您不提前知道哪些(或多少)参数将被传递给,您应该如何使用此功能yield?例如,如果有多个可能的屈服函数,该函数可能会调用。
  • Ret如果将多个值传递给,则类型是yield什么?

我完全误解了这一切是如何运作的吗?我设想这样的事情。在 Lua 方面:

loadImage将是一个 C++ 函数,它请求将图像加载到不同的线程中,然后调用lua_yield,一段时间后作为参数调用luabind::resume_functionimg

我应该作为参数传递"foo.png"给吗?yield在我调用之前给一个不同的函数yield,然后从不将任何值传递给yield?构建这个的正确方法是什么?我显然在这里误解了一些东西。

0 投票
1 回答
758 浏览

c++ - 调用 luabind 派生成员作为协程

luabind 文档说要从 C++ 调用 Lua 派生的虚拟成员,您创建一个派生自的包装类luabind::wrap_base并调用函数,如下所示:

到目前为止一切顺利 - 我有这么多工作。

但是我如何实现BaseWrapper::foo()将被覆盖的foo(在 Lua 端)调用为协程(使用resume_function)而不是直接调用它call呢?

这是使用非成员函数的方式:

我认为我需要知道的是如何获取funcfoo由 Lua 派生类实现),然后我现有的resume_function逻辑应该按原样工作。

0 投票
1 回答
1724 浏览

c++ - 重载函数和 luabind 的问题

我有一个要绑定到 lua 的类。减少的代码可能是:

当我尝试编译时,编译器会抛出错误:

我知道问题的原因是 luabind 无法推断出最佳重载函数,但是阅读 luabind 文档我在 luabind 中正确定义了该函数。

有任何想法吗?

提前致谢

0 投票
2 回答
192 浏览

c++ - 这个脚本是否会导致很多很多的闭包,如果是,还有什么替代方法?

我想在 Lua 中实现一个 GUI 消息处理系统,目前它的工作原理是这样的:

在 c++ 代码中,windows 有窗口过程,就像它们在 Windows API 中一样,我也试图在 Lua 中依赖它。

所以我的窗户上有一个luabind::object指向桌子的东西

该表的关键是一个 GUI 消息。Ele 是窗口句柄,a 又是消息,b 和 c 是参数。

是一些示例函数。

他们像这样绑定到对象:

这一切都在同一个脚本文件中,当我加载它时,它只会(据我所知)执行一次。因此,首先构建表,然后将表绑定到luabind:::object. 然后在 c++ 中调用这个对象,如下所示:

因此,每当触发消息时,都会调用该表,并且每次都会返回一个函数,我猜。我假设这一点,因为即使我只加载脚本文件一次,当我调试脚本并在那里放置断点时,当调用动作对象时断点会被命中。

这是处理事情的好方法吗?