我想用duk_pcall
它来做,这是我尝试过的:
- 首先,我将脚本文件加载到
char* string
. - 其次,用于
duk_pcompile_string(ctx, 0, programBody)
编译它。 - 然后,我可以使用
duk_pcall(ctx, 0)
一次调用它,然后调用duk_pop(ctx)
.
但是当我尝试duk_pcall
第二次使用时,我失败了。
你能给我一些关于如何以正确的方式做到这一点的建议吗?
我想用duk_pcall
它来做,这是我尝试过的:
char* string
.duk_pcompile_string(ctx, 0, programBody)
编译它。duk_pcall(ctx, 0)
一次调用它,然后调用duk_pop(ctx)
.但是当我尝试duk_pcall
第二次使用时,我失败了。
你能给我一些关于如何以正确的方式做到这一点的建议吗?
duk_pcompile_string
将结果放在 TOS 上并duk_pcall
执行 TOS(+ 最终参数)并用调用的返回值替换所有这些。
为了使函数可多次调用,您必须复制 TOS插入所需的参数,然后使用 pcall 调用它。调用后从堆栈中删除结果。原来的功能现在应该再次出现在 TOS 中。从本段中所写的内容重新开始,再次调用它。