gpt4 book ai didi

javascript - 从 Javascript 调用 C++ 函数指针

转载 作者:太空狗 更新时间:2023-10-29 23:02:13 25 4
gpt4 key购买 nike

是否可以将函数指针从 C++(使用 Emscripten 编译成 Javascript)传递给直接编写的 JS?我找到了创建 Javascript 函数的函数指针以传递给 C++ 的方法,但没有找到将函数指针(在 C++ 代码中在运行时给定值)公开给 Javascript 的方法。

代码范围内,我所追求的是能够完成下面的代码片段,以便调用作为 cFunctionPointer 传递的函数,我正在执行 console.log

void passToJs(void (*cFunctionPointer)()) {
EM_ASM_ARGS({
// Prints out an integer. Would like to be able to
// call the function it represents.
console.log($0);
}, cFunctionPointer);
}

最佳答案

https://stackoverflow.com/a/25584986/1319998 找到了答案.您可以使用 Runtime.dynCall 函数:

void passToJs(void (*cFunctionPointer)()) {
EM_ASM_ARGS({
Module.Runtime.dynCall('v', $0, []);
}, cFunctionPointer);
}

'v' 是不接受任何参数的 void 函数的签名。

显然它支持其他签名,例如 'vii',这是一个带有 2 个整数参数的 void 函数。然后必须将整数参数传递到数组中,这是 Runtime.dynCall 的第三个参数。

关于javascript - 从 Javascript 调用 C++ 函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319208/

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