草庐IT

c++ - 注册用于 Lua 5.2 的 C++ 类

所以我正在阅读如何通过THISlittleblogtutorial为Lua创建和注册一个C++类.但尽管它简单、信息丰富且清晰易读,但它似乎适用于旧版本的Lua。所以一些函数/宏要么丢失了,要么只是具有不同的签名。以下代码在LuaC5.2版中会是什么样子?#include#include#include#include#includeusingnamespacestd;//JustauselesstestclassclassMyClass{private:int_X;public:MyClass(intx):_X(x){};~MyClass(){Release()};//Display

c++ - 当我的 lua 代码抛出错误时,为什么我无法捕获 luabind::error 异常?

当您从C++调用LUA函数并且出现运行时错误时,LuaBind会抛出一个luabind::error异常,您可以捕获该异常,然后读取堆栈以查看错误是什么。我的调试器确实捕获了这个异常,但是当我让调试器继续运行时,程序没有在我的代码中捕获到异常,而是立即终止。LuaBind包含来自析构函数~proxy_member_void_caller()的文件中的“call_member.hpp”抛出异常。简单的测试代码就会出现问题。我正在使用带有LuaBind0.9.1的Xcode5。 最佳答案 原来是badpracticetothrowexc

Unity 项目中怎样正确的使用 Lua?

(图源siki学院-狸墨老师)什么是LuaLua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。可以方便的与c/c++进行相互调用。但是Unity中主要是用c#进行开发的,因此在Unity中使用Lua通常有以下两种方案:使用c#实现一个lua虚拟机基于原生的cluaapi做一个封装,让c#调用为什么要使用Lua1.轻量级:Lua用标准C语言编写并以源代码形式开发,编译后仅仅一百余千字节,可以很方便的嵌入到其他程序中。2.可扩展:Lua提供非常丰富易于使用的扩展接口和机制,由宿主语言(通常是C或C++)提供功能

c++ - 循环遍历 C++ 中的所有 Lua 全局变量

这个问题在这里已经有了答案:IteratingthroughaLuatablefromC++?(3个答案)关闭9年前。我已经搜索了很长时间,但我还没有找到从C++中获取所有全局变量的方法。考虑这个小的Lua测试脚本。myGlobal1="Global1"myGlobal2=2functiontest()locall1=0print(myGlobal1,myGlobal2,l1)endtest()假设您在print(myGlobal1,myGlobal2,l1)处暂停执行并从C++获取所有全局变量(myGlobal1和myGlobal2).这些示例是任意的,从C++的角度来看,全局变量是

Spring Boot + Lua = 王炸!

曾经有一位魔术师,他擅长将SpringBoot和Redis这两个强大的工具结合成一种令人惊叹的组合。他的魔法武器是Redis的Lua脚本。今天,我们将揭开这个魔术师的秘密,探讨如何在SpringBoot项目中使用Lua脚本,以解锁新的可能性和提高性能。如果你一直在寻找提升你的应用程序的方法,那么这篇博客将为你揭示其中的神奇之处。推荐一个开源免费的SpringBoot实战项目:https://github.com/javastacks/spring-boot-best-practice第一部分:Lua脚本简介当涉及Lua编程时,以下是对前述12个关键概念的详细说明,附带Lua代码示例以帮助你更深

c++ - lua_pop 与 lua_remove

目前我正在用C++构建自己的脚本VM管理器类。我对Lua&LuaC或C++的任何东西都没有问题,但让我困惑的一个部分是何时使用lua_pop以及何时使用lua_remove。据我了解,lua_pop是自上而下移除多个值(在堆栈上),删除不再需要的数据,而lua_remove是用于从任意有效的堆栈索引中删除单个值(基本上是Lua手册对两者的说明:P)。但我注意到网络上散布的某些代码段混合了lua_pop和lua_remove,但是当我尝试使用lua_pop时而不是lua_remove调用只是删除了顶部堆栈元素,我遇到了问题。那么是否有可能获得关于如何以及何时正确使用这两个功能以及这两个功

c++ - 在 C++ 中,如何在没有 pop() 函数的情况下返回堆栈的第二个元素?

我需要帮助在没有pop()的情况下返回堆栈的第二个元素吗?但我不知道如何使用。我的代码:stackst;st.push(10);st.push(20);st.top();//return20如何让这个函数在没有pop()的情况下返回10;谢谢。附言对不起我的英语。 最佳答案 我假设您正在尝试模拟基于堆栈的机器?这是用std::stack做的唯一方法:stackst;st.push(10);st.push(20);inttop=st.top();//return20st.pop();intsecond=st.top();//retur

c++ - 引用 front 和 pop_front

这合法吗?:Sample&sample=stack.front();stack.pop_front();我的程序有效。但是示例类有boost::optionalxxx成员(member)及之后pop_front,is_initialized()返回错误; 最佳答案 不,这是不合法的。您必须复制该对象,即使用Samplesample=stack.front()如果您使用的是std::vector,则pop_front调用会将后面的元素移动到该位置,并且您的引用指向不同的元素(之前的第二个,现在是第一个元素。)

c++ - pop_back() 可以减少 vector 的容量吗? (C++)

根据C++标准,是std::vector::pop_back()曾经允许减少vector的容量吗?我问是因为我想得到保证,以下代码不会抛出内存不足异常:my_vec.pop_back();if(...)my_vec.push_back(...);假设my_vec是一个std::vector.我猜有三种可能:是的,根据C++03和C++11这可能发生。不,C++11禁止这样做(但C++03不禁止)。不可以,C++03和C++11都禁止这样做。是的,我的问题与Doesstd::vector.pop_back()changevector'scapacity?有关,但我的问题具体是关于标准保证

c++ - 如何干净利落地结束 Lua 线程?

我的情况是,我正在使用Lua(C)API来执行保存在字符串中的脚本。我希望用户能够终止脚本的执行(如果脚本包含无限循环,这是必不可少的),我该怎么做?lua_State*Lua=lua_open();char*code;//InitialisationcodeluaL_dostring(L,code); 最佳答案 在线上Hook是不够的。此代码是单行,但会永远循环:whiletruedoend您需要设置一个指令计数Hook。如果我没记错的话,应该是lua_sethook(Lua,&LineHookFunc,LUA_MASKCOUNT