草庐IT

lua_tonumber

全部标签

c++ - 从lua文件获取简单值到c++的通用解决方案

我正在尝试使用Lua文件作为配置或ini。我成功了,但我的解决方案激怒了我。具体来说,get_double,get_int和get_string功能需要以可重用的方式完成。我在创建没有参数的函数模板时遇到了问题。另外,我不确定如何概括lua_is...和lua_to....我的想法是给我们if(is_same::value)return(double)lua_isnumber(L,-1);但它没有用。这是工作代码:主.cc:#include#includeusingnamespacestd;classLua_vm{private:lua_State*L;public:doubleget

c++ - 从零开始的 Lua/C++ 绑定(bind)

我是Lua的新手,正在尝试了解一些基础知识。我想了解的是将Lua绑定(bind)到C++实例。我对第三方库不感兴趣,我想在更基础的层面上理解这一点-谢谢:)这是我的问题:根据我所阅读的内容,我的假设是Lua只能绑定(bind)到静态C函数。这是正确的吗?这是否意味着要绑定(bind)C++类的实例,我首先需要为我想要的每个方法和属性getter/setter编写静态函数,并接受实例指针作为参数。我会在Lua中注册这些函数。我会向Lua传递一个指向C++类实例的指针。我会从Lua调用其中一个注册函数,传递C++实例指针。静态函数取消引用指针,调用等效方法。这有意义吗?还是我弄错了什么?感

c++ - Lua 5.3 undefined reference

我正在尝试学习如何将lua嵌入到C程序中,但我不擅长阅读技术文档,而且我还没有找到任何当前教程。这是我的程序:#include#include#include#includevoidreport_errors(lua_State*,int);intmain(intargc,char**argv){for(intn=1;n编译器给出了luaL_newstate、luaL_openlibs、luaL_loadfilex、lua_pcallk和lua_close的undefinedreference错误。我在一台Windows计算机上使用Code::Blocks,我已将luainclude目

c++ - 如何将C++类构造函数注册到Lua userdata并默认使用

使用LuaCAPI,我向Lua注册了一个简单的Object类,如下所示://MyC++ObjectclassclassObject{private:doublex;public:Object(doublex):x(x){}};//CreateandreturninstanceofObjectclasstoLuaintobject_new(lua_State*L){doublex=luaL_checknumber(L,1);*reinterpret_cast(lua_newuserdata(L,sizeof(Object*)))=newObject(x);luaL_setmetatabl

c++ - 使用 C API 覆盖 Lua 中的赋值运算符

我在我的C++程序中有对象作为用户数据传递给Lua,我重写了这个用户数据的元表,以便对对象的索引进行赋值(通过__newindex和__index)导致对C的调用,这转换赋值以影响C++对象或将C++元素转换为Lua值(另一个用户数据或基本类型,如bool、number、string)。用户数据作为参数传递给从我的C++程序调用的类似事件的Lua函数。luaL_newmetatable(L,"object");lua_pushstring(L,"__index");lua_pushvalue(L,-2);/*pushesthemetatable*/lua_settable(L,-3);

c++ - 是否可以修改 Lua 脚本来要求?

当我在Lua中调用require'name'时,名称可以是预加载的模块名称或存在于当前工作目录中的文件。我有以下两个问题:一个。我想知道是否有可能在需要预加载模块或文件之前确定是否需要它。B.如果它是一个文件,我想修改将需要的脚本(通过在现有脚本之上添加/附加一些代码),然后最终需要修改后的脚本。A和B都可能吗?P.S.:我在C++中使用Lua。 最佳答案 AreAandBbothpossible?是的,因为您可以编写自己的“require”函数来满足您的需求(包括您描述的所有内容)。你也可以看看package.searchers,

c++ - 使用全局 lua_State* 变量

我想在我的程序中使用一个全局lua_State*变量,通过initLua()函数初始化它,并使用它从main()运行一些Lua函数。当我尝试时,Lua代码根本无法运行。将来,我想使用一个Lua状态数组来实现多线程,其中每个线程都有自己的Lua状态。当我在main()中初始化Lua状态时,一切正常。我运行的是W10。在cfg.lua中:functionteste()return10;end在C++中,用于设置全局状态变量*L:voidinitLua(lua_State*L){L=luaL_newstate();luaL_openlibs(L);luaL_dofile(L,"./cfg.l

c++ - 我将如何与 Lua 共享 C++ 类中的变量?

我是Lua的新手,我一直在尝试在我正在组装的游戏引擎中为逻辑实现Lua脚本。到目前为止,我在通过引擎启动和运行Lua时没有遇到任何问题,而且我能够从C调用Lua函数,并从Lua调用C函数。引擎现在的工作方式是,每个对象类都包含一组变量,引擎可以快速迭代这些变量以绘制或处理物理。虽然游戏对象都需要访问和操作这些变量以使游戏引擎本身看到任何变化,但它们可以自由创建自己的变量,Lua在这方面非常灵活,所以我没有预见到任何问题。无论如何,目前游戏引擎方面的事情都在C领域,出于性能原因,我真的希望他们留在那里。所以在一个理想的世界中,当产生一个新的游戏对象时,我需要能够让Lua读/写访问这个标准

c++ - 集成 Lua 以在我的游戏引擎中构建我的 GameEntities?

我真的很想将Lua脚本添加到我的游戏引擎中。我正在使用Lua并使用luabind将其绑定(bind)到C++,但我需要帮助来设计使用Lua构建游戏实体的方式。引擎信息:面向组件,基本上每个GameEntity都是components的列表,它们在deltaT间隔内更新。基本上,游戏场景由游戏实体的集合组成。所以,这是一个难题:假设我有这个Lua文件来定义一个GameEntity及其组件:GameEntity={--EntityName"ZombieFighter",--Allthecomponentsthatmaketheentity.Components={--Componentto

c++ - 在 C++ 中访问 Lua 函数的返回值,反之亦然

我在Lua中有一些函数,在C++中有一些函数,我设法从我的加法、幂和除法中得到了正确的结果。我遇到的唯一问题是阶乘,因为我无法将正确的数字传递给它,这应该是除法的结果。在Lua中:functionpowLua(a,n)b=1fori=1,ndob=b*aendreturnbendfunctiondivisionLua(a,b)c=b/areturncendaLua=additionLua(2,3)bLua=additionLua(1,3)print("ResultofadditionLuaisa="..aLua.."\nResultofadditionLuaisb="..bLua.."