是否可以将函数指针从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);
}
答案 0 :(得分:1)
在https://stackoverflow.com/a/25584986/1319998找到答案。您可以使用Runtime.dynCall
功能:
void passToJs(void (*cFunctionPointer)()) {
EM_ASM_ARGS({
Module.Runtime.dynCall('v', $0, []);
}, cFunctionPointer);
}
'v'
是无效函数的签名。
显然它支持其他签名,例如'vii'
,这是一个带有2个整数参数的void函数。然后必须在数组中传递整数参数,该数组是Runtime.dynCall
的第三个参数。