问题标签 [lua-c++-connection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
193 浏览

gcc - 使用 liblua.a (lua5.3) 编译的 C 程序无法加载 C 动态库

我首先下载 lua-5.3.5 ,并将源代码放在我的工作目录中并使用

所以我在 ./lua-5.3.5/src 中得到了 liblua.a 和 lua 二进制文件。

然后我写了一个这样的 C 动态库:

我用命令编译:

如果我使用原始的lua二进制文件,它可以加载

但是如果我编写与 liblua.a 链接的 AC 程序,它就无法加载动态库。

编译:

跑:

0 投票
1 回答
84 浏览

lua - 没有括号的函数lua c ++

我正在创建一个基于 Lua 脚本中调用的函数播放音乐的应用程序。我称之为音乐。问题是我需要一个不需要括号的函数。像这样:

这是我的完整代码:

如何使播放功能无括号?

先感谢您

0 投票
1 回答
336 浏览

lua - 有没有一种简单的方法可以将 lua 表转换为 C++ 数组或向量?

我开始制作自己的包管理器并开始开发依赖系统。构建文件是用 lua 编写的,它们看起来像这样:

唯一的问题,我不知道如何转换

对于全局 c++ 数组:["some_dep", "some_dep2"] 列表中任何作为字符串无效的内容都应被忽略。有什么好方法可以做到这一点?提前致谢

注意:我使用 C api 与 C++ 中的 lua 交互。我不知道 Lua 的错误是使用longjmp还是 C++ 异常。

0 投票
0 回答
32 浏览

c++ - C++ - 如何使用 Lua 表作为成员定义 userdatum?

我有一个名为 LuaSettings 的用户数据。除了userdatum函数之外, this 有一个成员 - raw。该raw成员是一个普通的 Lua 表。这个的用法如下:

  1. 首先,userdatum 作为变量被压入堆栈settings

  2. 然后执行 Lua 文件并修改用户数据。

  1. 执行完成后,该settings.raw表被 C++ 代码使用。

这个怎么做?这甚至可能吗?如何定义此用户数据的大小?

0 投票
2 回答
76 浏览

lua - Lua C - 有没有办法在 C 中保留一个值,但仍然没有垃圾收集?

我正在 lua c 中创建一个线程,但我想将其保留在 C 中,而不是使其成为环境/等中的变量。但是当我丢弃由 lua_newthread 推送的线程值时,它很快就会被垃圾收集,因此变得无用。在这个线程中,我想运行用户传递的任意 lua 代码,允许他们使用与其他线程隔离的专有函数/变量。

有没有办法将线程/用户数据/表值标记为不可回收?

0 投票
1 回答
315 浏览

c++ - Lua 5.4 替换 luaL_openlib 给出 nil 值错误

我目前正在尝试更新 Dungeon Crawl: Stone Soup 中使用的 Lua 版本,由于 luaL_openlib 函数被大量使用并且已被弃用,因此我遇到了问题。目前,我将其替换为以下代码(根据位置使用不同的参数):

代码全部编译,但是当我尝试运行游戏时,出现以下错误:

任何人都可以就为什么会发生这种情况提供任何建议,或者任何人都可以就替换所有对 luaL_openlib 的调用的更好方法提供建议吗?我正在处理的代码可以在这里找到,并且在提交中它显示了我为更新对 luaL_openlib 的引用所做的所有最新更改。

编辑: 正如评论中提到的,这里是 dungeon.lua 中实际引发错误的代码:

0 投票
1 回答
96 浏览

c++ - 简单的 Lua corotine 测试在第一次运行时崩溃

简而言之,测试程序在 C++ 端创建一个协程,使用 Lua 端函数启动它,并使用一些日志恢复几次。它在第一次调用resume启动协程时突然崩溃,违反了对无效堆内存的访问(0xfdfdfd)。

这是整个代码:

这是堆栈跟踪:

Lua协程C API有什么误解吗?

此外,Lua 官方文档对k 函数和的概念给出了相当长的部分lua_pcallk,但似乎我的测试代码中的任何地方都不需要它们。我应该在哪里使用这些东西?

0 投票
0 回答
42 浏览

lua - 如何使用 C 使用 LuaJIT 发出自定义堆栈帧?

我想在我的 C 模块中发出额外的堆栈帧,以使回溯和分析器(我使用jit.profiler)提供更多信息。

像这样:

请注意,我说的是常见的执行堆栈(例如,我们在打印错误时看到的),而不是用于 Lua-C 互操作的“Lua 堆栈”

我试图弄清楚 LuaJIT 本身如何为 Lua 代码发出帧。LuaJIT 源代码有点复杂,无法对我在那里看到的内容做出安全假设,但有了一些建议(示例或/和代码指针),我已经准备好为该主题使用内部 API。

0 投票
1 回答
17 浏览

c++ - 无法在 C++ 中存储 lua 返回值

我有这个需要调用 Lua 函数的 C++ 代码。当我得到函数返回值时,一切都很好(“甚至打印结果”),但是在存储变量时,该值将消失。

0 投票
0 回答
41 浏览

c++ - Lua如何将变量从lua推送到C++

嗨,我正在尝试将变量从 Lua 推送到 C 函数,我该怎么做?我在 Lua 端生成了一个 C++ 对象,但想向该对象函数发送一个数字。但我得到:使用以下字符串加载脚本时出错:

播放器.lua

播放器.cpp