使用wasm数组所需的最小代码量是多少



我有一个c++文件,其中包含一个只做数学运算的函数。

此函数接受一个数组作为参数,并将其所有结果保存回同一个数组中。

我可以用emscripten编译它,这会给我一个可以工作的js和wasm文件,但它生成的javascript中充满了我不需要的大量填充物。

如果我不想在数组中通过,我会做以下操作:

var bytes = .... // The bytes of the wasm file
var Module = new WebAssembly.Module(bytes);
var wasmInstance = new WebAssembly.Instance(Module);
var desiredFunction = instance.exports.desiredFunction;

然而,当我使用上面的前3行代码初始化wasm,然后尝试调用以下命令时:

var buffer = Module._malloc(array.length);  //setup space in wasm memory

我收到一个错误,说"Module._malloc"不是函数。我还需要写什么代码才能让malloc ccwrap和ccall正常工作?

问题是Emscripten不是为编译非常小的程序而设计的。它是为编译大型代码库而设计的,因此它会自动将各种东西捆绑到生成的wasm和宿主JS文件中。

有一个问题讨论了将其添加为一个功能,即创建最小JS主机的能力。

还有其他更轻量级的编译C/C++的工具,比如webassembly,可能更适合您的需求。

相关内容

  • 没有找到相关文章

最新更新