呼叫C++;来自Javascript的函数指针 是否可以将函数指针从C++(编译成使用ESPRONTEN的JavaScript)直接写入JS?我已经找到了创建JavaScript函数指针的方法,可以传递给C++,但不是一个函数指针的方法,它在C++代码中运行时给出一个值,并将其转换为JavaScript。
代码范围内,我要做的是能够完成下面的代码片段,以便调用作为呼叫C++;来自Javascript的函数指针 是否可以将函数指针从C++(编译成使用ESPRONTEN的JavaScript)直接写入JS?我已经找到了创建JavaScript函数指针的方法,可以传递给C++,但不是一个函数指针的方法,它在C++代码中运行时给出一个值,并将其转换为JavaScript。,javascript,c++,emscripten,Javascript,C++,Emscripten,代码范围内,我要做的是能够完成下面的代码片段,以便调用作为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); }, 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);
}
在上找到答案。您可以使用Runtime.dynCall
功能:
void passToJs(void (*cFunctionPointer)()) {
EM_ASM_ARGS({
Module.Runtime.dynCall('v', $0, []);
}, cFunctionPointer);
}
'v'
是不接受任何参数的void函数的签名
显然,它支持其他签名,例如'vii'
,这是一个接受2个整数参数的void函数。然后必须将整数参数传递到数组中,该数组是Runtime.dynCall
的第三个参数