草庐IT

lua_number

全部标签

c++ - 如何将 C++ 对象返回到 lua 5.2?

如何将C++对象返回给lua?我的C++代码如下:classMyClass{public:voidsay(){print("Hello\r\n");}};inttest(lua_State*l){MyClass*obj=newMyClass();lua_pushlightuserdata(l,obj);return1;}Lua测试如下:locala=MyClass:new()a:say()如何修改test()函数使其正常工作?obj会被lua自动销毁吗?PS:我已经设置了MyClass元表如下voidl_registerClass(){lua_newtable(l);intmethod

c++ - 将已存在的对象从 C++ 返回到 Lua

在C++中,假设我有一个创建二叉树结构的类,我使用它是这样的:CTreeRoot*root=newCTreeRoot(/*whatever*/);CNode*leftNode=root->getLeftNode();CNode*rightNode=root->getRightNOde();leftNode->doSomething();rightNode->doSomething();//etc并假设左右节点有自己的左右节点(因此,二叉树)。现在我想将它公开给Lua(不使用luabind)这样我就可以做同样的事情:localroot=treeroot.new(/*whatever*/)

C++ Lua 从 Lua 表中获取值

我正在尝试从Lua表中获取值。这是我在Program.cpp中写的:lua_State*lua=luaL_newstate();luaL_openlibs(lua);luaL_dofile(program->getLuaState(),"Script.lua");lua_getglobal(lua,"table");lua_pushstring(lua,"x");lua_gettable(lua,-2);printf("%i",lua_tonumber(lua,-1));我在Script.lua中写了这个:table={x=12,y=32}问题是这只会在控制台中写入0。我检查过lua文

c++ - 传递 C++ 对象以便 Lua 可以使用它

我了解Luabind,我可以公开类,然后可以在lua中创建这些类的实例。module[L_state][class_("Player").def(constructor()).def("Update",&Player::Update)];test.luaplayer=Player()player:Update()但是如果我想在C++中创建播放器实例怎么办,因为我想在C++中调用它的成员,但我也想将播放器的相同实例公开给Lua,以便它仍然可以调用它的函数,例如:player:Update() 最佳答案 您可以通过luabind将值压入

c++ - 从 C++ 读取 Lua 表

我已经为这个简单的事情尝试了很多替代方案,但无法让它发挥作用。我希望用户在第一步中从Lua定义一个表:a={["something"]=10}--key=something,value=10然后,在第二步中,用户将从Lua中调用一个用C++设计的函数:b=afunction(a)--afunctionwillbedesignedinC++C++代码:intlua_afunction(lua_State*L){intnargs=lua_gettop(L);if(nargs>1)throw"ERROR:Only1argumentintheformoftablemustbesupplied.

c++ - Lua C++ 表迭代

我对lua_next的真正工作原理有点困惑。用户定义一个表:a={["a1"]=20,["a2"]=30}我想用C++代码打印这张表:inlineintlua_print(lua_State*L){wxStringwxReturnStr=wxEmptyString;wxStringtempString=wxEmptyString;intnargs=lua_gettop(L);for(inti=1;i当我从Lua调用时,这段代码运行良好:print(a)--Workswell但是,假设我在Lua中有一个表:b={["b1"]=10,["b2"]=15}如果我这样调用代码:print(a,

c++ - 如何通过 SWIG 将 lua 嵌入到 C++ 中

目前,我有一组SWIG包装器用于我的类(class),并且全部构建。我可以创建一个lua虚拟机并加载我的包装器,但那时我很困惑。谷歌搜索告诉我如何将c++放入lua中,但没有告诉我如何将lua放入c++。我真正想做的就是设法实例化一个lua对象并将它传递给我的主游戏引擎对象指针,从那里我可以管理 最佳答案 看看《ProgramminginLua》这本书,它有一节关于LuaCAPI.要调用Lua函数,请使用lua_pcall,相当于lua_call(有一个简短的例子)除了它会捕获Lua运行时错误。您必须已经加载并运行了一次脚本(使用例

c++ - Lua、元表和全局变量

我正在努力改进我们为机器人玩家处理Lua脚本的方式Bitfighter.目前,每个机器人都有自己的L实例,我们正试图通过交换环境表让它们共享一个。请注意,机器人可能是完全不同的脚本。我意识到这个方法在Lua5.2中被弃用了,但是我们目前使用的是lua-vec,它仍然使用Lua5.1。该游戏是用C++编写的。所以...首先我们创建一个环境,并将其命名为://Createatablewithroomfor0arrayand1non-arrayelementslua_createtable(L,0,1);//--tab//Settheglobalstabletohandleanyreques

C++ Lua 错误处理

我正在开发一个程序(C++,使用D3D9)和Lua。我已经实现了LUAApi,除了错误处理之外,一切正常。我在谷歌上搜索了很多,然后找到了一个可以处理大部分错误的解决方案。我写这篇文章是因为其他错误。我将在图片中向您展示一些相关代码。现在最重要的函数:PerformCall()和LuaErrorReport()但是,正如我之前所说:正在处理一些错误。但这个不是。 最佳答案 关于可能出错的一些想法。您正在为lua_pcall传递L,而LuaErrorReport获取State()。他们可能在不同的lua_State上工作,这就像在协程

c++ - Lua 5.2 - 对象中的 C++ 对象(使用 lua_lightuserdata)

编辑:[答案2中的解决方案]我是LUA的新手,在尝试做我想做的事情时遇到了麻烦。我有一个看起来像这样的C++对象:C++对象定义structTLimit{boolenabled;doublevalue;TLimit():enabled(false),value(0.0){}~TLimit(){}};classTMeaurement{public:TMeasurement():meas(0.0){}~TMeasurement(){}TLimitmin;TLimitmax;doublemeas;};我希望能够在LUA中访问以下形式的TMeasurement类型的对象:LUA所需用途--ob