草庐IT

lua_tonumber

全部标签

c++ - 如何从 Lua C API 中的函数获取多个返回值?

我想知道如何从LuaCAPI中的函数获取多个返回值。Lua代码:functiontest(a,b)returna,b--IwouldliketogetthesevaluesinC++endC++代码:(调用函数的部分)/*pushfunctionsandarguments*/lua_getglobal(L,"test");/*functiontobecalled*/lua_pushnumber(L,3);/*push1stargument*/lua_pushnumber(L,4);/*push2ndargument*//*callthefunctioninLua(2arguments,

c++ - 有人可以解释为什么我想要或需要将 Lua 与 C++ 混合用于游戏吗?

我研究过一些Lua,并且我对C++比较熟悉,但我仍然看不出有任何真正的理由我想将Lua(或任何与此相关的脚本语言)与C++结合使用。如果我已经在用C++(一种快速语言)制作游戏,为什么我不直接用C++做所有事情呢?毕竟,我已经熟悉C++了。我为什么要花时间学习一门新语言以及如何将它集成到我的C++代码中?我敢肯定,只是让界面设置和工作会有问题。学习需要一些时间,它如何真正得到返回?它真的只对大型开发团队有益吗? 最佳答案 我附和已经说过的话,并且我想在此刻将Lua集成到我的游戏引擎中时添加我自己的想法!这取决于您制作的游戏类型,但无

c++ - Lua,我可以禁用 C++ 中的部分语言吗?

假设我在C++应用程序中嵌入了Lua。这个问题听起来可能很奇怪,但我很感兴趣,是否有一种标准方法可以从C++端禁用Lua功能?例如,我想禁用新变量的创建,除了一些已定义的变量,如下所示:localtime=10localsize=20functiontest()returntime*sizeend如果我定义了time、size和test函数以外的任何东西,我想让LuaVM失败。这可能不破解VM本身吗?或者例如我想禁用循环(for和while语句)。 最佳答案 限制可以创建或访问的global变量的名称很容易:只需将您的脚本加载到具有

c++ - 如何将 C++ 成员方法和成员变量与 Lua C API 绑定(bind)?

到目前为止,我所做的所有谷歌搜索都发现了一些非常接近的东西,但还没有完全符合我想要做的事情。让我用最基本的方式描述一下:假设您有一个C++类classA{public:intMethod();intVariable;};现在假设您实例化A*Foo;现在假设您有一个包含以下3行函数的.lua文件:functionTest()localn=Foo:Method();Foo.Variable=0;localm=Foo.Variable;end如何将对象A*绑定(bind)到lua以便所有这些事情都可行?伪代码方面,我的第一次尝试是这样的,部分来自复制粘贴示例:在只调用一次的函数中,不管A的实

c++ - 在 lua 中有没有办法将 upvalue 绑定(bind)到 userdata 值而不是函数?

在下面的示例中,创建了一个userdata值,类型为MyType,并使用元函数__tostring创建了一个表,该元函数调用LI_MyType__tostring。该代码创建了一个基于闭包的luaOOP。我对所提供示例的不满是,似乎只有一种方法可以通过上值将userdata与方法调用相关联。就其本身而言,这不是问题,除非我想跨实例共享相同的元表。在一个理想的世界中——我希望通过这个问题来挖掘——有没有一种方法可以将上值与值(例如userdata)相关联,而无需通过以下方式将其与函数调用相关联升值?我希望有一个技巧可以让我继续使用基于闭包的luaOOP和跨实例共享相同的元表。我并不乐观,

c++ - Lua、C++,有没有比 lua_open() 更深入的介绍?

我现在在谷歌上搜索了很多,但我找到的只是使用C++的Lua的“HelloWorld”示例。Situation:游戏,大型游戏。有一个游戏内控制台,目前用C++(面向对象和所有)硬编码,有很多if-else-if-else...block来检查用户在控制台中输入的命令。每个命令都可以更改游戏其他类的成员(例如命令“speed5”通过调用Car::setSpeed更改classCar中的变量doublespeed(5))并且还将有关结果的输出返回给控制台。还有一些命令在“幕后”做的不仅仅是更改变量,这也应该由Lua完成,并且只有最终结果传递回C++代码(控制台输出+正确类中的更改变量)。我

c++ - C++ 和 lua 初学者游戏开发

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我是C++和一般编程的初学者。我看了几个小时的C++教程并阅读了很多相关内容(你能推荐一些教程吗?),但我遇到但无法理解的是库。我想用C++开发游戏(我认为,它似乎是最有趣的atm)。我能理解我需要一个用C++进行游戏编程的库,但我不太了解库具体是什么,以及在哪里可以找到这些库。此外,我读到Lua应该很适合用来编写游戏脚本。我想知道这是不是真的?如果是真

c++ - luabind:无法调用基本的 lua 函数,例如 print、tostring

我想这是一个非常基本的问题:C++代码,调用lua是这样的:lua_State*m_L;m_L=lua_open();luabind::open(m_L);luaL_dofile(m_L,"test.lua");try{luabind::call_function(m_L,"main");}catch(luabind::error&e){std::stringerror=lua_tostring(e.state(),-1);std::cout现在test.lua有如下内容:functionmain()print"1"end执行后我收到错误:test.lua:2:attempttocal

c++ - 从 C/C++ 快速检索 lua 对象

所有非本地lua对象都存储在某个表中。从表中检索对象通常意味着首先对键进行哈希计算,然后检索相应的对象。我想避免哈希计算的额外步骤。最简单的事情(曾经是可能的)是:lua_Objecto(...someluacall...);lua_pushobject(o);但是,如前所述,这已经不可能了。那么,我如何快速存储然后将lua对象(特别是一个大表,重新创建它会很慢)推送到lua堆栈上?我知道注册表,但那只是另一个表,如果我从那里存储/检索,则无法避免哈希计算。编辑:一些细节:lua包装库的一个众所周知的问题是临时表问题。假设我打电话:control:camera():get_someth

c++ - 如何在 C++ 和 Lua 之间来回传递大型结构

我正在考虑将Lua嵌入到我正在开发的C++应用程序中。我的意图是使用Lua编写脚本,为某些给定输入执行哪些有序操作,即。在c++程序中接收到一个新的工作项,将详细信息传递给Lua后端,Lua回调到c++中进行必要的工作,返回完成的结果。涉及的主要数据结构是一个大型(大约80多个成员)struct。我是Lua的(非常)新手,不确定如何将它传入和传出我的主机应用程序和嵌入式Lua状态。到目前为止,我认为我的选择是:a)在进出C++和Lua时将所有单独的数据成员压入/弹出堆栈(听起来很乱)。b)构建一个表并用值填充,然后将其放入/取出堆栈(更干净一点)。c)将它作为userdata传递(轻/