: ошибка проверки wasm: по смещению 8: двоичная версия 0x1 не соответствует ожидаемой версии 0xd index.html:31:24
Когда я компилирую код C в wasm, используя emcc, я получаю эту информацию об ошибке в консоли Firefox Javascript:
: wasm validation error: at offset 8: binary version 0x1 does not match expected version 0xd index.html:31:24
Я не знаю, что привело к этой ошибке. Не могли бы вы объяснить это мне?
2 ответа
Я уже ответил на ваш вопрос о github, разместив здесь репост.
Я парень из Китая, не очень хорошо разбираюсь в английском, пожалуйста, не забывайте, если я сказал что-то не так.
Ваш язык в порядке, не нужно извиняться! Многие из нас также не являются носителями английского языка.
Я считаю, что проблема, с которой вы сталкиваетесь, заключается в том, что WebAssembly переходит на версию 1. Старые наборы инструментов и браузеры ожидаемой версии 0xD
как предварительная версия. Теперь они ожидают версию 0x1
,
Поэтому вы попадаете в переходный период между предварительной версией и начальной версией. Ваш браузер находится за цепочкой инструментов, которую вы используете.
Можете ли вы указать, какую версию браузера вы используете, и какую версию набора инструментов вы используете? Не только "редакция разработчика", но и точная информация о выпуске.
Проблема решится сама собой, когда все обновится до выпущенной версии. Это неприятный побочный эффект первоначального релиза.
двоичный файл был обновлен до 0x1
в этом коммите. Отсюда вы можете узнать, какая у вас двоичная версия. Emscripten принес эту версию в свой incoming
Ветка с этим коммитом. Вам нужно будет использовать входящую ветвь хотя бы после этого коммита, чтобы получить 0x1
двоичные файлы, помеченные как 1.37.3. раньше Emscripten будет производить 0xD
двоичные файлы.
Браузеры будут обновляться так же. Если версия для разработчиков Firefox ожидает 0xD
затем попробуйте Nightly. В этом переходном случае может быть проще изменить наборы инструментов или версию браузера для соответствия.
Я встретил обратную проблему и очень быстро исправил в JS: После выборки файлов я получил буфер, к которому я сделал:
new Int32Array(buffer,4,4)[0]=1 //or 13 in your case
Это решение только для этого перехода, который изменяет только номер версии, но не структуру.