[英]Call C++ function pointer from Javascript
是否可以将函数指针从C ++(使用Emscripten编译成Javascript)传递给直接编写的JS? 我已经找到了创建Javascript函数的函数指针以传递给C ++的方法,但是没有一种方法可以将函数指针暴露给Javascript,在C ++代码的运行时给出一个值。
代码范围内,我所能完成的是能够完成下面的代码片段,以便调用作为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
的第3个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.