Ошибка «Невозможно установить свойство widthNative» при загрузке wasm - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь транслировать вывод wasm в свой веб-холст.Но при загрузке функции Main моего Wasm возникает следующее исключение:

hello.js:10522 exception thrown: TypeError: Cannot set property 'widthNative' of undefined,TypeError: Cannot set property 'widthNative' of undefined
at Object.updateCanvasDimensions (http://192.168.0.109:8080/hello.js:5876:30)
at Object.setCanvasSize (http://192.168.0.109:8080/hello.js:5854:17)
at _emscripten_set_canvas_size (http://192.168.0.109:8080/hello.js:9590:15)
at wasm-function[764]:168
at wasm-function[1034]:1597
at wasm-function[327]:57
at wasm-function[329]:9
at wasm-function[330]:9
at Object.Module._main (http://192.168.0.109:8080/hello.js:10327:75)
at Object.callMain (http://192.168.0.109:8080/hello.js:10502:30)

Я определил часть кода в сгенерированном js-файле, отвечающую за исключение:

updateCanvasDimensions:function (canvas, wNative, hNative) {
    if (wNative && hNative) {
      canvas.widthNative = wNative;
      canvas.heightNative = hNative;
    } else {
      wNative = canvas.widthNative;
      hNative = canvas.heightNative;
    }

Я подозреваю, что проблема с компилятором emcc.Вот моя командная строка компиляции:

emcc -o hello.html hello.c -O3 -s WASM=1 --shell-file html_template/shell_minimal.html -s USE_SDL=2 -s USE_SDL_IMAGE=2 -s NO_EXIT_RUNTIME=1 --embed-file pong.c8 -s EXPORTED_FUNCTIONS=[\"_main\",\"_test_function\"] -s EXTRA_EXPORTED_RUNTIME_METHODS=[\"ccall\"]"

Есть идеи?Большое спасибо заранее.

1 Ответ

0 голосов
/ 06 октября 2018

Я нашел решение.На самом деле, необходимо назначить свойство canvas (Module.canvas) перед основным скриптом:

var Module = {
        canvas: (function() {
            var canvas = document.getElementById('canvas');
            return canvas;
            })()
    };
...