繁体   English   中英

从Javascript调用C ++函数指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM