Я пытаюсь создать минимальный пример использования WebAssembly с Emscripten. У меня есть простая функция C, которая возвращает фиксированное значение, и я пытаюсь вызвать эту функцию из JavaScript в файле HTML. Однако обратный вызов onRuntimeInitialized никогда не вызывается, и модуль WebAssembly, похоже, не инициализируется должным образом.
C-код (
Код: Выделить всё
minimal.cКод: Выделить всё
#include
uint32_t get_fixed_value() {
return 42;
}
Код: Выделить всё
emcc minimal.c -o minimal.js -s EXPORTED_FUNCTIONS='["_get_fixed_value"]' -s EXPORTED_RUNTIME_METHODS='["cwrap"]' -s MODULARIZE
Код: Выделить всё
minimal.htmlКод: Выделить всё
Minimal WebAssembly Example
var Module = {
onRuntimeInitialized: function() {
console.log("WebAssembly module initialized.");
// Define the getFixedValue function
window.getFixedValue = function() {
let getFixedValue = Module.cwrap('get_fixed_value', 'number', []);
return getFixedValue();
};
// Enable the button once the module is ready
document.getElementById('getValueButton').disabled = false;
}
};
console.log("Module object created.");
Minimal WebAssembly Example
Get Fixed Value
function getValue() {
if (typeof getFixedValue !== 'undefined') {
let result = getFixedValue();
document.getElementById('result').textContent = "Fixed Value: " + result;
} else {
alert("WebAssembly module is still loading. Please try again in a moment.");
}
}
Вопросы
Почему не вызывается обратный вызов onRuntimeInitialized? Я никогда не вижу «Создан объект модуля». в консоли браузера. Та же проблема наблюдается в Firefox и Chrome.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... javascript
Мобильная версия