我有一个关于Emscripten的小问题。 如何从JavaScript异步调用C++回调?使用Emscripten异步调用C++函数
这是我的JS代码:
<script type="text/javascript">
function sendRequest(callback) {
setTimeout(function(){
callback["sayHi"]();
}, 100);
}
</script>
这是我的C++代码:
#include <emscripten/emscripten.h>
#include <emscripten/bind.h>
using namespace emscripten;
class MyClass {
public:
void sayHi() {
printf("Hello! \n");
};
};
EMSCRIPTEN_BINDINGS(MyClass)
{
class_<MyClass>("MyClass")
.function("sayHi", &MyClass::sayHi);
}
int main() {
val window = val::global("window");
auto myObj = MyClass();
window.call<void>("sendRequest", myObj);
return 0;
}
当我执行这个代码,它失败,出现错误:
Uncaught BindingError: Cannot pass deleted object as a pointer of type MyClass*
我用EMCC 1.35.22并用此命令进行编译:
~/app/emsdk_portable/emscripten/tag-1.35.22/emcc main.cpp --bind -o out.js
如果代码是不是异步是否行得通? – Louis
是的,如果我打电话回叫[“sayHi”](); setTimeout之前,然后它的作品。 – AndriiHeonia