jjzjj

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++ - luabind 和静态字段

我正在尝试从类中导出静态字段:classFoo{conststaticintVar;};//luabindmodule:.def_readonly("Var",&Foo::Var);//I'vealsotried.def_readonly("Var",Foo::Var);error:nomatchingfunctionforcallto‘luabind::class_::def_readonly(constchar[6],constFoo&)’note:templateluabind::class_&luabind::class_::def_readwrite(constchar*,D

c++ - 减少 C++(或 x-treme x-macros)中的代码重复

我在为游戏实现Lua接口(interface)时使用x-macros来减少重复和代码重复的数量Bitfighter.以下代码工作正常://FnnameValidparamprofilesProfilecount#defineTELEPORTER_LUA_METHOD_TABLE\TELEPORTER_LUA_METHOD_ITEM(addDest,ARRAYDEF({{PT,END}}),1)\TELEPORTER_LUA_METHOD_ITEM(delDest,ARRAYDEF({{INT,END}}),1)\TELEPORTER_LUA_METHOD_ITEM(clearDests

C++模板方法创建对象

我正在使用Luabind将我的游戏引擎暴露给Lua。我最近遇到了麻烦,因为我发现我无法创建一个“新的”,例如GUIObject*obj=newGUIObject()在Lua中,而不是在Lua中创建的所有内容都归Lua所有。嗯,这不是什么大问题,我决定只在对象上创建一种工厂模式,例如我的GUIManager有classGUIManager{templateT*CreateObject(TclassType){returnnewT();}}我的Luabind绑定(bind)看起来像这样:class_("GUIManager").def("CreateObject",(GUILabel*(G

Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤

目录基础资料探讨重点实现功能硬件准备软件版本软件使用串口工具主要步骤1、SIM卡状态检查及激活PDP2、关于SSL配置3、通过TCP连接到MQTT服务器4、订阅或者发布消息4.1订阅主题:AT+MSUB4.2发布消息4.3注意事项:4.4接收消息示例基础资料基于Air780E开发板:Air780E文档中心简介:AT开发探讨重点AT固件是通信模组或者单片机(MCU)+网络模块标准固件的基本配置,该模式定制化程序较高,简单易上手,但缺点也较为明显,仅用于快速基本功能验证。本系列主要探讨MQTT方式手动接入、信息订阅及发布的基本原理,后续详细介绍接入多种云平台的基本操作及手动鉴权步骤。实现功能MQT

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++ - 如何编写可以与操作系统交互的VLC插件

我需要找出是否有可能以及如何(我不关心语言C/C++、Lua、Python...)来制作一个VLC插件,其目的将由VLC播放器调用并且在视频流的特定时间会做一些Action。我需要做的是打开一个UDP套接字并发送一些从当前播放的视频附带的文件中读取的数据。我需要做一个类似字幕阅读器的东西,最好能初始化UDP套接字并将读取的数据发送到服务器。我不确定在Lua中是否可以创建UDP套接字,也许更好的选择是二进制C/C++插件,但找不到任何示例。一般来说,我的要求最多是:在VLC启动时加载设置文件需要在视频流的特定时间由播放器触发获取源视频流的文件名打开同名不同扩展名的文件(脚本)打开一个UD