Вызов WebAssembly из JavaScript

92
07 октября 2021, 07:00

У меня есть программа C++ на 1000+ строк. Программа состоит из одной функции, которая принимает на вход пять unsigned int (или 1 unsigned char и 4 unsigned int), возвращая либо строку, либо 4 unsigned int (я не совсем понимаю, как вернуть массив чисел, поэтому использую строку). При этом сама функция вызывает другие функции программы в процессе вычисления. Я скомпилировал программу с помощью WasmExplorer в wasm файл.

Как вызвать функцию получившегося wasm файла из javascript, получив результат? Пример типа:

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...');
  });

Выдаёт 7 ошибок

Unchecked runtime.lastError: The message port closed before a response was received.

И 1 ошибку

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

на строку

then(module => { return new WebAssembly.Instance(module) });
READ ALSO
Возможно ли использовать конструктор new ResizeSensor более чем с одним элементом?

Возможно ли использовать конструктор new ResizeSensor более чем с одним элементом?

Есть два блока, необходимо их сравнивать и в зависимости от ширины и высоты совершать определенные манипуляции

290
фича у плагина emmet. Как сделать нумерацию

фича у плагина emmet. Как сделать нумерацию

В плагине emmet есть такая тема с множественными курсорамиНо как проделать с ними нумерацию строк под типа id="t20", id="t21", id="t22" и т

78
Строка или число в string?

Строка или число в string?

Пользователь вводит данные:

254
Не происходит переключение событий jQuery? Не происходит повторный выбор условия

Не происходит переключение событий jQuery? Не происходит повторный выбор условия

Никак не могу понять в чем я ошибаюсьЕсть 3 ссылки и есть обработчик события, который срабатывает при клике на одну из 3-х ссылок

121