我有一個關於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