Как определить, когда сгенерированный Emscripten файл .js заканчивает загрузку wasm, чтобы я мог запустить свои функции JS, которые его вызывают? - PullRequest
1 голос
/ 06 октября 2019

Я использую Emscripten для компиляции кода C в WebAssembly. Это последний вызов emcc в моем Makefile:

emcc $(CFLAGS) iva.a -o iva.js

, который работает как задумано и генерирует файл .js и файл .wasm. JS загружается в мою HTML-страницу следующим образом:

<script src="../dist/iva.js">

И он загружает и создает экземпляр кода WebAssembly iva.wasm правильно. Это сообщение появляется в консоли вскоре после загрузки страницы:

Fetch finished loading: GET "http://localhost:6931/dist/iva.wasm".

Это означает, что моя WebAssembly загружается через fetch () и, возможно, в ожидании некоторой обработки, я могу получить доступ к своим функциям черезконсоль:

Module._init_display_system()

и получить возвращаемые значения. Это верно, и все работает.

Очевидно, я должен быть в состоянии сделать это и через скрипт. Однако я не вижу способа запустить функцию после создания моей WebAssembly. У меня такое ощущение, что я упускаю что-то довольно очевидное.

В любом случае, как мне это сделать?

1 Ответ

1 голос
/ 06 октября 2019

Использовать Module['onRuntimeInitialized'].

Module['onRuntimeInitialized'] = function() {
       console.log("wasm loaded ");
       var x=Module.ccall("doubleIt","number",["number"],[20]);
       alert(x);
    }

Вы использовали emsdk, есть онлайн-компиляторы WASM, такие как Wasmfiddle. Найдите мой репозиторий github , полезный для обоих методов.

...