Java的Webassembly

问题描述 投票:0回答:1

我有一个C ++程序,包含1000多个行(使用vector和stdlib.h)。该程序由一个函数组成,该函数以5个无符号int(或1个无符号char和4个无符号int)作为输入,返回一个字符串或4个无符号int(我不知道如何返回数字数组,因此我使用一个字符串) )。我使用WasmExplorer将程序编译为.wasm文件。

如何从javascript的.wasm文件中调用函数,得到结果?我尝试过:

let squarer;

function loadWebAssembly (fileName) {
  return fetch (fileName)
    .then (response => response.arrayBuffer ())
    .then (bits => WebAssembly.compile (bits))
    .then (module => {return new WebAssembly.Instance (module)});
};
  
loadWebAssembly ('http://test.ru/squarer.wasm')
  .then (instance => {
    squarer = instance.exports._Z7squareri;
    console.log ('Finished compiling! Ready when you are ...');
  });

Chrome中的错误(我有29Kb .wasm文件)

Uncaught (in promise) RangeError: WebAssembly.Instance is disallowed on the main thread, if the buffer size is larger than 4KB. Use WebAssembly.instantiate.

如何从JS调用函数(带有示例)?

Chrome中wasm / wasm-000197c6 / wasm-000197c6-22中的特定功能

javascript c++ webassembly
1个回答
0
投票

错误消息中明确说明了问题和解决方案:您应该使用WebAssembly.instantiate()函数而不是WebAssembly.Instance()构造函数。

© www.soinside.com 2019 - 2024. All rights reserved.