问题标签 [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++ - 通过 Luabind 向 Lua 公开 STL 队列
我正在尝试用 STL Queue 类替换用 Lua 编写的队列类的现有实现。我不确定为什么会失败,或者如何解决它。下面是一些显示相同行为的示例代码以及错误输出。提前致谢!
和 gcc 输出:
c++ - luabind 0.9.1 迭代器总是只弹出最后一个对象
全部。通过使用 luabind 从 lua 脚本读取数组,我遇到了一个奇怪的问题。
lua 脚本如下所示:
C++ 代码如下所示: luabind::object data_root = luabind::globals(L)["root"];
输出只有:
我想输出[root]的所有元素,但它只输出最后一个及以上。
谢谢你,杰森:)
c++ - Luabind:std::map 的 return_stl_iterator
有什么方法可以将 STL 迭代器返回到std::map
(例如std::map<const std::string, int>
)?
示例类的 Luabind 定义:
GetItems()
返回对std::map
容器的 const 引用。
像这样在 Lua 中访问它时:
Luabind 抛出一个 std::runtime_error 说"尝试使用未注册的类"。迭代std::map
s 是不可能的吗?(文档说所有容器都有begin()
并且end()
可以工作......)
c++ - C++类成员函数指针指向函数指针
我使用 luabind 作为我的 lua 到 C++ 包装器。Luabind 提供了一种方法来使用我自己的回调函数来处理 lua 抛出的异常,set_pcall_callback()。所以我解释了文档中的一个示例,更改是 logger->log() 函数并将该函数放在一个名为“Engine”的类中,因此它不再是常规的全局函数,而是现在的成员函数,即我的问题似乎出在哪里。
以下是相关的代码片段:
以下是编译器在编译期间所说的内容:
所以似乎错误在于该函数需要一个常规函数指针,而不是类成员函数指针。有没有办法转换或使用中间函数指针传递给 set_pcall_callback() 函数?
谢谢!
c++ - C ++没有捕获lua异常
我有一个使用 luabind 绑定到 Lua 的 C++ 程序。我目前正在测试 lua 和 luabind 必须提供的错误处理方法,以帮助调试 lua 脚本。目的是让 luabind 或 lua 在出现语法错误和编程错误时抛出异常,以便我可以调试和纠正它们。
现在,问题是下面的脚本只是停止执行而没有抛出任何错误消息或异常,所以在一个更大的程序中,我不知道问题出在哪里,或者即使首先出现问题。
以下是相关的片段:
路亚:(start.lua)
C++:
这是运行时的输出:
脚本停止运行,而不是像我预期的那样抛出异常。有没有办法控制lua何时抛出异常或另一种处理错误的方法?我设置了日志功能来生成调试信息,但是断点显示上面的 catch 语句没有被执行。
谢谢!
luabind - lua-function 作为导出函数的参数
是否可以将 lua 函数发送到这样的主 C++ 程序?
或者更好,像这样?
我如何从主程序中调用它?如果可能的话 - 以同样的方式使用 lua 表。我的意思是exported_function(table);
?
c++ - 需要帮助了解 luabind 如何实例化类
假设我有这样的课程:
并通过 Luabind 将其暴露给 Lua,如下所示:
最后在这样的脚本中实例化它:
那时 A 的实际“存在状态”是什么?
它是在堆中的某个地方,lua 在某处保留了对它的引用吗?(或 luabind::object?)
我有一种感觉,它只能是一个指针,例如,由 new 或等价物分配。
但是,我可以将函数绑定到接受引用的 lua,比如lua_doSomething(A & a)
最终的引用将是一个实际的引用。当然,我知道这很可能只是 luabind 传递a
为*a
,但我不知道它是否是这样发生的。
我问这个的原因是为了更好地理解和预测在脚本中实例化的对象的生命周期。
那,我不确定所有权或生命周期是否会改变,而不是像上面那样将类暴露给 lua,而是这样做:
并像使用它一样
根据我目前理解的逻辑,这种情况需要我进行清理,因为我是分配新对象的人,除非像这样的 luabind 分配与使用绑定的构造函数相同。
简而言之,我真的很困惑对象的生命周期和这里的东西......我搜索了与此相关的关键字,但我只得到像 http://www.gamedev.net/topic/525692-luabind这样的东西-所有权和销毁/
这不是我真正想知道的。我想了解在分配、实例化、生命周期等方面如何在幕后处理事情的具体方式。
windows - Windows下安装luabind的问题
无法构建 luabind。已下载 Boost 和 bjam.exe。有人在Windows下体验过吗?我如何使用这个库?谢谢。
lua - luabind::object 的奇怪问题
我目前正在使用 luabind,特别是https://github.com/rpavlik/luabind ,因为官方版本已经过时并且不再使用最新版本的 boost 进行编译。
我遇到了一个非常奇怪的问题,我在网上的任何地方都找不到。我设法将案例简化为一个非常简单的场景。
在一个模块中,我将拥有:
在另一个模块中,我将拥有:
当我从 lua 提供 functionA 和 functionB 并连续调用它们时,输出将是:
如您所见,该对象仍然引用了 luabind 可以打印的内容。但是当我尝试将它压入堆栈并从堆栈对象创建一个新对象时,它会产生一个 nil 值。
这只发生在这种特定情况下。当我把所有东西都放在一个函数中时,它工作得很好。当我将代码放入同一模块的函数中时,它会正常工作。我还没有制作一个独立的测试项目,但是我想不出我的代码中有任何干扰,这些函数是从 lua 直接调用的。
难道我做错了什么?或者这是一个错误?如果它是一个错误,我怎么从来没有听说过这样的事情?
c++ - luabind 0.9.1 使用 stl 迭代器只显示一个元素
我在使用 luabind 将 stl::vector::iterator 返回到 lua 脚本时遇到了一个奇怪的问题。
下面是代码:
1)我创建了两个由 lua 脚本调用的函数:
2)我将函数绑定到lua
3)我做的脚本如下:
4)结果是:在输出窗口中,它只显示:
该程序在 luabind/policy.hpp:754 中中断
我想显示 std::vector 中的所有元素,但它只显示第一个元素并崩溃。
非常感谢你!:)
杰森