c++;使用emscripten的wasm库,如何调试;错误:异步:承诺回调"; 我尝试用C++编写一个C++库和一个Me..cpp。main.cpp包含库中的几个函数。除了流式传输数据的函数外,大多数函数都可以工作。在浏览器(Firefox/也测试了Chrome和Safari)中运行main.html时,出现以下错误: printErr http://0.0.0.0:8080/main.html:109 callMain http://0.0.0.0:8080/main.js:8456 doRun http://0.0.0.0:8080/main.js:8480 run http://0.0.0.0:8080/main.js:8489 (Async: setTimeout handler) run http://0.0.0.0:8080/main.js:8485 runCaller http://0.0.0.0:8080/main.js:8424 removeRunDependency http://0.0.0.0:8080/main.js:1262 receiveInstance http://0.0.0.0:8080/main.js:1365 receiveInstantiatedSource http://0.0.0.0:8080/main.js:1372 (Async: promise callback) instantiateArrayBuffer http://0.0.0.0:8080/main.js:1377 instantiateAsync http://0.0.0.0:8080/main.js:1391 (Async: promise callback) instantiateAsync http://0.0.0.0:8080/main.js:1388 (Async: promise callback) instantiateAsync http://0.0.0.0:8080/main.js:1386 createWasm http://0.0.0.0:8080/main.js:1408

c++;使用emscripten的wasm库,如何调试;错误:异步:承诺回调"; 我尝试用C++编写一个C++库和一个Me..cpp。main.cpp包含库中的几个函数。除了流式传输数据的函数外,大多数函数都可以工作。在浏览器(Firefox/也测试了Chrome和Safari)中运行main.html时,出现以下错误: printErr http://0.0.0.0:8080/main.html:109 callMain http://0.0.0.0:8080/main.js:8456 doRun http://0.0.0.0:8080/main.js:8480 run http://0.0.0.0:8080/main.js:8489 (Async: setTimeout handler) run http://0.0.0.0:8080/main.js:8485 runCaller http://0.0.0.0:8080/main.js:8424 removeRunDependency http://0.0.0.0:8080/main.js:1262 receiveInstance http://0.0.0.0:8080/main.js:1365 receiveInstantiatedSource http://0.0.0.0:8080/main.js:1372 (Async: promise callback) instantiateArrayBuffer http://0.0.0.0:8080/main.js:1377 instantiateAsync http://0.0.0.0:8080/main.js:1391 (Async: promise callback) instantiateAsync http://0.0.0.0:8080/main.js:1388 (Async: promise callback) instantiateAsync http://0.0.0.0:8080/main.js:1386 createWasm http://0.0.0.0:8080/main.js:1408,c++,webassembly,emscripten,C++,Webassembly,Emscripten,我用以下方法建立了图书馆: emcmake cmake emmake make 到libfoo.a libfoo 2.a 要使用我正在运行的库编译main.cpp: emcc main.cpp libfoo.a libfoo2.a -s WASM=1 -o main.html -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall","cwrap"]' -s ALLOW_MEMORY_GROWTH=1 -s --shell

我用以下方法建立了图书馆:

emcmake cmake 
emmake make
到libfoo.a libfoo 2.a

要使用我正在运行的库编译main.cpp:

emcc main.cpp libfoo.a libfoo2.a -s WASM=1 -o main.html -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall","cwrap"]' -s ALLOW_MEMORY_GROWTH=1 -s --shell-file shell_minimal.html
我正在使用macOS和最新的emscripten(2.0.8)


如何继续调试,有什么想法吗?

关于承诺的链接对您有帮助吗?谢谢,这看起来是一个很好的开端您以前使用过Asynchronos呼叫吗?你知道问题出在哪里了吗?您是否自己制作了
main.js
,因为它看起来像一个相当大的文件?调用是什么样子的?不,我以前没有处理过异步调用。我通过添加标志'-s USE_PTHREADS=1--std=c++11'部分解决了这个问题。但是现在我有一个错误:“内存访问越界”(由C++ Logger-SPDLG引起)。我使用了自动生成的main.js。也许使用自定义js来缩小问题范围是个好主意。