如何在 Lua 中使用 C++ 类库对象
所以,在过去的几个小时里,我一直在尝试从 Lua 中使用包含在静态(或动态)库中的 C++ 类。我找到了几个包,比如LunaFive或SimpleCppBinding,但是我似乎不理解如何正确地使用它们。从我看到的来看,有一个主函数,因此我想这不是一个库,而是一个我运行的可执行文件,然后运行 Lua 脚本,它会挂载应用程序并获取类,或者其他什么?我基本上想做的是:
- 创建一个包含 C++ 类 'Player' 的库
- 修改该库以从 Lua 中可用
- 以与 Lua 类相同的方式从 Lua 中使用该类及其方法
这样的事情可能吗?如果是这样,有人能解释一下如何做到这一点吗?
我目前在 Windows 上,但我也可以在 Linux 上做到。在 Windows 上,我使用 VS,在 Linux 上,我将使用 CLion 和 g++。Lua 5.3。
我不确定这是否与此有关,但我正在为 FiveM(GTA V 多人游戏客户端)开发游戏模式。 FiveM 默认带有 Lua 支持脚本,但我很想使用一些 C++ 标准库和功能。因此,我真的很想为服务器创建一些 C++ 库,然后从 FiveM 提供的 Lua 中使用它们。
Lua 从一开始就被设计成与 C 语言和其他常规语言相结合的。这种语言的双重性带来了许多好处。Lua 是一种微小而简单的语言,部分原因是它不会尝试做 C 已经擅长的事情,比如纯性能,低级操作或与第三方软件的接口。
我理解你的痛苦,但是 Lua 实际上不是被设计成以你打算的方式使用的,而是被构建成另一种方式。
我所能想到的最接近你想要的结果的方法是,有一个主机 C++ 应用程序,从该应用程序立即创建一个 lua state,并将从 C++ 程序调用的函数的结果 push 到堆栈中,作为一个返回值可以在你的 Lua 脚本中使用并处理。
如果这是你可能能够适应的东西,这是一个很好的起点。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

静态库不可行。你的选择是:1. 一个带有某种接口可被 Lua 可执行文件访问的动态库(Alien、Lua特定的钩子...),或者 2. 一个自定义的可执行文件,其中包括 Lua 引擎和 C++ 代码以及一些支持代码。你所提供的 'main' 函数的例子可能属于后者。