问题标签 [luaplus]

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 回答
373 浏览

c++ - 使用 LuaPlus 时出现编译错误

我找到了一个很好的教程,介绍如何使用 Visual Studio 2010 将 LuaPlus 实现到 C++ 项目中。
http://www.zynox.net/luaplus-1-compiling-basic-usage/ 但我无法让它工作,因为一些错误信息..

我尝试使用 TCHAR 而不是 char,但后来它说:

因此,出于测试目的,我只是删除了这三行并将它们替换为静态路径:

现在我得到:

我完全不知道如何解决这个问题。我什至尝试使用教程创建者可能使用的相同版本的 LuaPlus,但错误消息并没有消失。

0 投票
2 回答
386 浏览

c++ - LuaPlus 创建一个 Lua 表

如何创建这样的 Lua 对象:

在我的 C++ 源代码中,其值取自我的 C++ 代码的变量?
最后,它当然需要对所有脚本都可用。

0 投票
1 回答
214 浏览

c++ - LuaPlus 从 C++ 操作表

在本指南中,创建了一些函数来将怪物添加到桌子上并降低桌子上怪物的生命值。

您可以从 lua 脚本中轻松使用这两个函数:

但是我如何从 C++ 端调用这些函数呢?

我的意思是原来的: ObjectMgr::CreateObejct(),ObjectMgr::GetObjectByIndex()Monster::Hurt()

我花了 8 个多小时试图解决这个问题!但是没有任何效果。:/

我最好的尝试可能是这样的:

这给了我以下错误:

类“std::tr1::shared_ptr”没有成员“伤害”

0 投票
1 回答
313 浏览

c++ - LuaPlus: How to push a table to the stack?

I want a function to return a (key-value-)table when called by a Lua-script. Therefore I have to push the table to the stack.
I know how to push an integer to the stack: state->PushInteger(10)
I also know how it works for strings and other numbers, but how would I push a table to the stack and furthermore how would I even create it from the C++ side?

This site usually explains everything pretty well: http://wwhiz.com/LuaPlus/LuaPlus.html but I have a really hard time understanding how LuaPlus works. So in this case it doesn't really help me. :(

It would be really nice if someone could help me out here, I'm literally trying to do this for 3 days now.. :/

0 投票
2 回答
1303 浏览

c++ - LuaPlus:如何让函数返回一个表?

我想知道如何从 C++ 端创建和注册一个函数,该函数在从 Lua 端调用时返回一个表。
我已经尝试了很多东西,但没有什么真正奏效。:/

(对不起,长代码)例如这不起作用,因为 Register() 需要一个“luaCFunction”风格的函数:

当我尝试将其设置为 luaCFunction-function 时,它只是崩溃(0x3)并说:
Assertion failed: 0, file C:\......\ luafunction.h,第 41 行

为了澄清:从Lua方面我希望它可以像这样调用:

编辑:打印功能来自这里。基本上是这个不起作用的原因。Print 只能打印字符串而不是表格...如果您只返回 1,上面的 C++ 代码就可以正常工作。

这是我的 LuaPlus 版本附带的文档:http: //luaplus.funpic.de/

我真的希望你能帮助我。我已经开始认为这是不可能的。:'(

编辑: 我完全忘了说使用 PushStack() 会导致错误,因为“该成员不存在”......

0 投票
0 回答
207 浏览

c++ - LuaPlus:使用参数和一个返回值注册函数?

我真的不明白这个系统。使用.RegisterDirect("myFunc",myFunc)I 可以注册一个不能接受参数但因此可以返回值的函数。
使用.Register("myFunc",myFunc)I 可以注册一个可以接受参数但不能返回任何值的函数。

我现在在这个问题上花了几天时间,我就是想不通。如果有人能看看这个,我将不胜感激。

这是文档。这是一个关于如何RegisterRegisterDirect. 假设我希望 Print 函数始终返回字符串“hello”。我该怎么做?

Afaik 我必须将值压入堆栈并返回 1 以指示堆栈上有东西。但这似乎行不通。我试图将其添加到函数中以返回数字 4:

我真的希望你能在这里帮助我。

0 投票
1 回答
3531 浏览

c++ - LuaPlus:如何从多线程 C++ 调用 Lua 函数?

我的 Lua 脚本中有一种回调函数,我想从 C++ 端的不同线程调用它(每秒 0-100 次)。到目前为止,它基本上可以工作,但是一旦我在很短的时间内多次调用它,它就会使程序崩溃,从而导致错误,例如:
-As????ion failed: 0, file ...LuaFunction.h, line 146或者这个(完全随机)

我认为当它在完成另一项任务之前从 C++ 端调用时会发生这种情况。对我来说最明显的尝试(在 lua 函数调用期间互斥锁所有线程)根本没有帮助。:/
如果我只像每 2 秒调用一次 Lua 函数,那么我根本不会收到任何错误(好吧,直到清理部分,如果它到达那一点,它将崩溃而没有特定错误)。

这是我的代码(我试图尽可能地裁剪和简化我的代码,并添加了很多评论):

主程序.lua

0 投票
1 回答
118 浏览

build - 为什么构建 LuaPlus 时没有要包含的头文件?

从这个问题的答案看来,这似乎应该很简单:如何将 LuaPlus 包含到您的项目中?

不过,这绝对是荒谬的。太愚蠢了,您必须构建它(以及如此糟糕的网站),但也绝对没有关于此的教程。安装它的可怕文档。

我读过一些关于使用“果酱”的东西来构建它的东西,但这对我来说是陌生的术语,听起来很愚蠢。为什么不把这个简单呢?大多数库只是让您直接下载它们,提取,链接和wallah!我以前建过库,非常简单易行。

无论如何,我在 Code::Blocks 中成功构建了库,但这不是问题。问题是它只构建库。要添加到包含目录的头文件在哪里?

我试着搞乱,但我只是将我认为头文件的内容转储到一个目录中并包含它时遇到了错误。

我在网上看的,用Visual Studio构建的人没有问题,它会创建所有的头文件。我的 Code::Blocks 构建的唯一结果是库文件。

这是一个刚开始使用的 PITA,我已经使用了 2 个小时,我可以使用它的唯一方法是将整个源代码包含在我的项目中(这太荒谬了)。

0 投票
0 回答
82 浏览

c++ - 为什么我在使用 LuaPlus 时不能在函数中返回 LuaObject?

我正在关注使用 LuaPlus 的 Game Coding Complete 第 4 版中的示例。

在示例中,以及我自己尝试过的任何代码中,如果函数的返回值为 LuaObject,我将无法将其注册到 lua。

在.h

当我将返回值设置为 LuaObject 时,总是会发生错误。这就是为什么当我尝试在我的代码中返回一个具有不同函数的 LuaObject 时,我之前无法做到这一点。

0 投票
0 回答
66 浏览

c++ - 在运行时执行“真正的”动态转换?

所以我仍在为这个学校项目开发一个灵活的脚本系统,但遇到了障碍。问题是这样的:我有一个脚本状态管理器接口,任何脚本状态都会实现(目前正在实现 lua,但希望以后能够添加 python)。它对 DoFile、DoString、RegisterObject 和 RegisterFunction 等具有纯虚函数。所以 LuaStateManager 使用 luaplus 类实现了这个接口,并按照它应该的方式封装了 LuaState 对象。

因此,当一个对象向 lua 注册自己并将其所有方法扔到一个元表中时,我必须执行以下操作:

如果我可以访问 StateManager 接口中的底层状态对象,这会很好,因为它将从 Actor 类本身调用,因此可以保证强制转换。不幸的是,我需要以某种方式将此信息传递给 LuaState::RegisterFunction 方法,这样我就不必公开 LuaState 对象并将我的类与其耦合。据我所知,没有办法传递有关要转换为哪种类型的类的信息。

有没有机构有任何建议?我曾想过尝试使用模板化函数来执行强制转换,但我知道你不能拥有指向模板的函数指针,所以这是不可能的。谢谢!