草庐IT

lua-patterns

全部标签

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

c++ - 将用户数据元表添加到 lua 表

我有一个使用用户数据对象运行良好的脚本系统。但是,我现在想在我的用户数据上拥有一个可以采用常规表的属性。我认为我应该做的是创建一个普通表并将元表设置为使用我当前的一组元方法,但是我正在努力理解如何做到这一点-我确信这是一个简单的调整,我可以现在就看到它。我现有的代码如下:voidLuaContext::push(lua_State*state,boost::shared_ptrwrapped){staticstructluaL_Regmethods[]={{"__index",LuaWrapped::static_get},{"__newindex",LuaWrapped::stati

c++ - C++修改Lua中 "arg"的方法

测试.lua#!/usr/bin/envluajitio.stdout:setvbuf('no')fori=1,#argdoio.write(arg[i]..'')endio.write('\n')如果我在命令行上运行它luajittest.lua没有返回错误。这是我的测试.cpplua_State*l_=lua_open();luaL_openlibs(l_);luaJIT_setmode(l_,-1,LUAJIT_MODE_WRAPCFUNC|LUAJIT_MODE_ON);lua_pop(l_,1);ints=luaL_loadfile(l_,"test.lua");lua_pu

c++ - lua数组转换成c++数组

localpricetagColors={[3242]={255,0,255},[6712]={255,255,0}}functiongetPricetagColor(itemnumber)localr,g,b=0,0,0ifpricetagColors[itemnumber]thenr,g,b=pricetagColors[itemnumber][1],pricetagColors[itemnumber][2],pricetagColors[itemnumber[3]endreturn{r,g,b}end好的,所以我现在正在尝试逐步进入C++。现在我正试图弄清楚C++中的(复杂的?)

c++ - 如何将用 swig 包装的 c++ 类的实例推送到 lua 堆栈上?

我有一个用swig包装并用lua注册的类。我可以在lua脚本中创建此类的实例,一切正常。但是假设我在我的C++代码中创建了一个类的实例,并调用了新的X,并且我有lalua_stateL,其中有一个我想调用的函数,它接受一个参数,一个X的实例...我该如何调用该函数。这是(一些)有问题的代码(我省略了错误处理的东西):主要.cppclassGuiInst;extern"C"{intluaopen_engine(lua_State*L);}intmain(){GuiInstgui=newGuiInst;lua_State*L=luaL_newstate();luaopen_engine(L

c++ - 将 Lua 与 Visual Studio 2010 链接起来

我们使用Lua(www.lua.org)脚本让用户自定义我们用C++编写的服务器软件。目前我们正在将项目的32位Windows版本移植到VisualStudio2010。一旦VS2008一切正常,我们认为升级过程不会有问题。不幸的是,每当我们尝试将lualib(作为dll)链接到我们在VS2010中的项目时,链接器都找不到lua函数(错误消息如下所示)。似乎某些调用约定在2010上是错误的,例如应用程序可能正在寻找前缀为“_”的lua函数。要从我们的项目模块(C++)访问lua函数(用C编写),我们使用这个:extern"C"{#include"lua/src/lua.h"#inclu

c++ - 从 Visual Studio 构建/运行 Lua

在使用VisualStudio进行链接和构建方面,我完全是个菜鸟。我想将Lua集成到我的C++控制台应用程序中。有人可以一步一步地介绍如何从lua.org获取Lua依赖项,到在VS中实际运行“HelloWorldfromLua”,以及中间的所有步骤。在网上找到这样的东西非常困难,因为大多数都需要构建Lua等的先决知识。谢谢:) 最佳答案 从LuaforWindows开始包裹。它将为您提供包含Lua安装的独立电池。LuaforWindows不是官方发行版,但它深受Lua用户社区的推崇。您可以使用它的lua.exe来获得在Windows

c++ - 如何同步 Lua 和 C++ 垃圾回收

我正在尝试将lua嵌入到现有的C++应用程序中,并通过继承执行该工作的类为其制定了标准程序。我看到的严重问题是,如果暴露的对象在C++环境中被释放或删除,那么来自Lua的调用将导致崩溃。如果程序使用“delete”删除了内存,那么我也许可以在delete上写一个包装器来处理Lua中的释放,但是如果内存是由C++分配的,并在适当的变量超出范围时释放我看不到如何找到它然后在lua空间中采取适当行动的方法,有人对此有任何想法吗?谢谢。 最佳答案 一般来说,几乎每个Lua包装器都有一些方法来决定谁拥有什么内存。也就是说,一个对象是属于(因此

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