比如一个最简单的hello world cpp通过Emscripten编译成hello.wasm和胶水js:hello.js.
//hello.cc
#include <stdio.h>
#ifndef EM_PORT_API
# if defined(__EMSCRIPTEN__)
# include <emscripten.h>
# if defined(__cplusplus)
# define EM_PORT_API(rettype) extern "C" rettype EMSCRIPTEN_KEEPALIVE
# else
# define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE
# endif
# else
# if defined(__cplusplus)
# define EM_PORT_API(rettype) extern "C" rettype
# else
# define EM_PORT_API(rettype) rettype
# endif
# endif
#endif
EM_PORT_API(int) show_me_the_answer() {
return 42;
}
EM_PORT_API(float) add(float a, float b) {
return a + b;
}
int main() {
printf("Hello World-\n");
return 0;
}
在普通的html中可以顺利调用:
<script>
Module = {};
Module.onRuntimeInitialized = function() {
//do sth.
Module._main();
console.log(Module._add(12, 1.0));
}
</script>
<script src="hello.js"></script>
在小程序中似乎只WXWebAssembly.instantiate(path, imports)
请问该如何修改胶水js以适配呢?WebAssembly.RuntimeError等需要修改成WXWebAssembly.xxx吗?
能否帮忙提供一个小程序调用c++ 转化的wasm的最小示例?谢谢!
(或者说小程序还提供其他更方便地使用c++进行密集运算的方式吗?)
你好。解决办法有几个:
我在这边提出了:https://developers.weixin.qq.com/community/develop/doc/000aacfd74c97027951db1daa5b800
代码片段是:https://developers.weixin.qq.com/s/mIMtk4mI7Fvy