问题标签 [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 投票
2 回答
267 浏览

visual-studio - 如何引用 .cpp 文件而不将它们包含在 Visual Studio 的解决方案中?

我正在尝试编译此代码:

但是我没有 .lib 的luabind,所以我将源代码与 .h/.cpp 文件一起使用。我这样做的方法是添加要包含的目录,但出现链接错误。我可以编译的唯一方法是将 .cpp 文件添加为现有元素,但解决方案树会因附加文件而变得混乱。有人可以告诉我是否有办法在解决方案的属性中添加其他 .cpp 文件的目录?

谢谢

0 投票
1 回答
1148 浏览

lua - 从 C++ 返回对象表,采用策略

使用 luabind,我从 C++ 创建了一个对象表

我将功能注册为

和 lua_Object 作为

如何告诉 luabind 获取存储在表中的对象的所有权( new lua_Object( ... ) )?什么是解决方法?

谢谢 -

0 投票
0 回答
310 浏览

lua - 通过 Lua 脚本访问 Android Content Provider 数据

我知道可以使用基于 Android 的 API 的 Content Provider Class 来查询 Content Provider 的数据。

http://developer.android.com/guide/topics/providers/content-providers.html

但是,是否有任何库允许通过进行本机调用(Lua 脚本)来访问此数据,例如,如果我需要通过在 Lua 脚本中进行调用来读取移动设备联系人列表中某个人的联系信息,是否可以? 是否有任何具有类似 Lua 语法的库可以本地读取数据?

如果不是,完成上述任务的最佳方法是什么?到目前为止,我已经成功地使用 LuaSQL 库读取了应用程序本地的 SQLite3 数据库。现在我想使用 Lua 以某种方式从 Content Provider 读取数据。

感谢您的所有帮助。谢谢。

0 投票
1 回答
2116 浏览

c++ - 使用 Luabind 处理事件回调

我正在将 Lua 脚本添加到我们的应用程序中,并且我需要为 GUI 工具包实现绑定。我们使用的工具包是 wxWidgets。

我正在使用 Lua 5.1 和 luabind 0.9.1,到目前为止效果很好。但是,我不确定如何最好地处理事件。例如,如果您想创建一个按钮并在单击它时打印一个字符串,您可以在 C++ 中编写类似这样的内容

我在 Lua 中做同样事情的梦想 API 看起来像这样:

或者,允许多个事件处理程序:

如果不可能,像这样更类似于 C++ API 的东西:

但是,我不确定如何使用 Luabind 来实现这一点,而无需为我想要使用的 wxWidgets-library 中的每个类编写包装类。

有什么建议么?

也许 Luabind 可以以某种方式自动创建辅助类(比如“wxLuaEventPropagator”)?这样 wxButton 类对于每个事件(“on_click”等)都有一个嵌套的 wxLuaEventPropagator 类。再一次,我不想为我使用的 wxWidgets 中的每个类创建包装类,因为有很多。

(是的,我知道 wxLua)

0 投票
2 回答
2047 浏览

c++ - 如何使用 Luabind 绑定重载函数?

我正在用 c++ 编写一个游戏引擎,它将提供 Lua 脚本(我正在使用 Luabind 进行包装),并且在绑定重载函数时遇到了一些问题。即:我有重载功能:

void setGlobalPosition(const Vec3& position);

void setGlobalPosition(Real x, Real y, Real z);

我想把这两个都暴露给lua。显然这是错误的:

luabind::module(L)[ luabind::class_<Critter::Body>("Body") .def("setGlobalPosition", &Critter::Body::setGlobalPosition ) ];

我在这个网站http://www.codeproject.com/KB/graphics/luabindLuaAndOgre3d.aspx?msg=3376320找到了一种方法(非常好的 Luabind 教程 - 我强烈推荐它),如下所示:

luabind::module(L)[ luabind::class_<Critter::Body>("Body") .def("setGlobalPosition", (void( Critter::Body::*)(const Vector3&))Critter::Body::setGlobalPosition ) ];

但它也给了我错误(如果有人感兴趣,我可以附上它们)。

我也尝试过 .def("setGlobalPosition", Critter::Body::setGlobalPosition<Vector3> ) ,但仍然有错误。

有什么想法我该怎么做?


编辑:好的,我找到了一种方法:

从 luabind 文档,但我得到错误(第一个):

错误 C2440:“类型转换”:无法从“重载函数”转换为“void (__thiscall Critter::Body::*)(Ogre::Vector3)”

但无论如何,问题出现了,因为这个函数是继承的(它来自NxOgre::Actor::所以我无论如何都不是正确的方法


编辑 2:

我刚刚尝试将函数的版本与 3 个浮点数作为参数绑定,并且......令人惊讶的是,一切都编译得很好,但带有 vector3 的版本却没有...... :(

这是我用来实现 3 float 功能的:

我对此感到难过;(

0 投票
1 回答
3214 浏览

c++ - 从 Luabind 调用 C++ 成员函数会导致“未找到匹配的重载”

我有一些在 DLL 中导出到 Luabind 的类,这两个类(LuaScriptManager、EventManager)一切正常。我可以从 Lua 调用他们的函数,一切都很好,但现在我试图在我的客户端可执行文件中设置一些新的类,它与 DLL 链接,到目前为止完全没有运气。

这是我调用的每个函数的错误消息:“未找到匹配的重载,候选:void loadResource(ResourceManager&, std::string const&)”

类绑定来自http://www.nuclex.org/articles/5-cxx/1-quick-introduction-to-luabind

这是相应的lua测试代码:

这种奇怪行为的原因可能是什么?

0 投票
3 回答
2736 浏览

c++ - 我应该如何将 lua 函数绑定到 C++ 函数?

我有一个名为 Entity 的类,它有许多函数,如 onPickup、onDrop、onUse 等。我想做的是,编写一个定义所有这些函数的脚本,并使它们可以从 C++ 函数中调用。所以在 C++ 中定义的函数只会调用它们对应的具有某些功能的 Lua 函数。

但问题是,我希望我编写的每个脚本,让程序中的每个实体都在它自己的范围内工作。

我正在使用 LuaBind,而且我之前没有使用 Lua 的经验,所以我在这里有点迷茫。

0 投票
3 回答
398 浏览

eclipse-plugin - 打开现成的 Lua 文件

我是 Lua 语言的新手。. . 我有一些现成的 .lua 源文件。现在我想编辑它,也想修改它。首先,我想打开看看。

我在网上搜索,发现它可能是在记事本中打开的,但是当我在记事本中打开它时,它会显示一些垃圾值。. . .

谁能帮我打开并阅读它?

提前致谢。. .

0 投票
2 回答
633 浏览

c++ - lua的表模拟

再会

我有一个特定的任务是让 c++ std::map 访问 lua 脚本。所需的脚本语法是 glob["tag"] = "value" 或 glob("tag") = "value"

在研究中,尝试过 luabind 绑定

但是在运行下面列出的脚本之后

出现错误 [string "glob("tag") = "asdasd"..."]:1: '=' 附近出现意外符号

所以,我正在等待您的建议和意见。

谢谢

更新 2lhf:全局变量数据通过 c++ 部分存储和序列化,必须从 lua 访问。luaState 是在每次脚本执行时创建的,并且在执行之间不存在。解决方案之一是在脚本执行之前创建和填充全局变量表,并在执行后将其与地图同步,但是,我认为它足够慢。因此,将不胜感激通过具有上述语法的 c 函数进行访问。

0 投票
2 回答
608 浏览

c++ - 发生错误后,如何确保(luabind)lua 状态良好?

当 lua 代码导致异常时,luabind 会在堆栈上留下错误信息供我收集。我想知道在处理完异常后如何保证 lua 堆栈处于合理状态:

  1. 我发现的例子告诉我使用luabind::from_stack(e.state(), -1). 这不会将错误消息留在堆栈上吗?我不应该弹出它吗?

  2. 从堆栈中弹出错误消息是否足够?该错误是否会导致其他垃圾留在堆栈上?

发生错误后如何确保 lua 状态良好?

这就是我所拥有的: