0

我想用duk_pcall它来做,这是我尝试过的:

  • 首先,我将脚本文件加载到char* string.
  • 其次,用于duk_pcompile_string(ctx, 0, programBody)编译它。
  • 然后,我可以使用duk_pcall(ctx, 0)一次调用它,然后调用duk_pop(ctx).

但是当我尝试duk_pcall第二次使用时,我失败了。

你能给我一些关于如何以正确的方式做到这一点的建议吗?

4

1 回答 1

0

duk_pcompile_string将结果放在 TOS 上并duk_pcall执行 TOS(+ 最终参数)并用调用的返回值替换所有这些。

为了使函数可多次调用,您必须复制 TOS插入所需的参数,然后使用 pcall 调用它。调用后从堆栈中删除结果。原来的功能现在应该再次出现在 TOS 中。从本段中所写的内容重新开始,再次调用它。

于 2020-12-25T09:42:41.510 回答