gpt4 book ai didi

lua - Lua协程错误: tempt to yield across metamethod/C-call boundary

转载 作者:行者123 更新时间:2023-12-04 21:00:51 27 4
gpt4 key购买 nike

我使用的游戏引擎允许您在Lua中编程。游戏引擎命令位于从C创建的DLL中。在C中创建了一个调用Lua文件的exe。这个Lua文件是放置所有游戏代码(包括主循环)的地方。 exe没有来回关系,但是您可以从DLL中调用函数。

因此,在主循环之前的这里,我创建了一个函数,将从中创建一个协程。该函数在一个很大的表上进行迭代,因此每产生n次迭代。这个函数有一个无限的while循环,因为我需要这个东西来运行主游戏循环的每个循环,但是如果在多个循环之间进行分配就可以了。

然后,我用此函数作为参数创建一个协程。然后在主游戏循环中恢复此协程。

当我运行代码时,出现错误:试图跨元方法/C调用边界屈服

我在网上阅读一些东西,但并没有真正理解这里的问题。 exe调用Lua文件后,它直到Lua文件完成后才返回到exe文件。由于我的主循环位于Lua文件中,因此在我的测试用例中它永远不会完成。

那我有什么选择呢?

最佳答案

该错误告诉您,您正在尝试从Lua代码内部进行屈服,而在执行屈服的Lua代码与恢复协程的Lua代码之间存在一些C函数。要解决此错误,您需要做的是从Lua调用一些C函数,该函数会回调Lua代码,然后再调用coroutine.yield()

你不能那样做。相反,您必须重组代码以避免这种情况。由于您未提供任何代码,因此建议不多。

关于lua - Lua协程错误: tempt to yield across metamethod/C-call boundary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com