: wasm validation error: at offset 8: binary version 0x1 does not match expected version 0xd index.html:31:24

: wasm validation error: at offset 8: binary version 0x1 does not match expected version 0xd index.html:31:24

当我使用 emcc 将 C 代码编译为 wasm 时,我在 firefox javascript 控制台中收到此错误信息:

: wasm validation error: at offset 8: binary version 0x1 does not match expected version 0xd  index.html:31:24

我不知道是什么导致了这个错误。你能给我解释一下吗?

我已经回答了你的问题on github,在这里重新发布。


I am China boy is not good at english, please don't keep in mind if i said something wrong.

你的语言很好,不用道歉!我们中的许多人也不是以英语为母语的人


我相信您 运行 遇到的问题是 WebAssembly is moving to version 1。较旧的工具链和浏览器期望版本 0xD 作为预发布的东西。他们现在期望版本 0x1.

因此,您正处于预发布和初始发布之间的过渡期。您的浏览器支持您正在使用的工具链。

您能具体说明您使用的是哪个浏览器版本,以及您使用的是哪个工具链版本吗?不仅仅是 "developer edition",还有确切的发布信息。

随着所有内容都更新到已发布的版本,问题将自行解决。这是初始版本的不幸副作用。

binaryen 在 this commit. From this you can work back which binaryen version you have. Emscripten brought that version into its incoming branch with this commit 中更新为 0x1。您至少需要在此提交后使用其传入分支来获取 0x1 二进制文件,该二进制文件被标记为 1.37.3。较早的 Emscripten 将生成 0xD 个二进制文件。

浏览器将以同样的方式更新。如果 Firefox 开发者版需要 0xD,那么试试 Nightly。在这种过渡情况下,更改工具链或浏览器版本以匹配可能更容易。

我遇到了相反的问题,我在 JS 中修复得非常快: 获取文件后,我得到了我所做的缓冲区:

new Int32Array(buffer​,4,4)[0]=1 //or 13 in your case

此解决方案仅适用于仅更改版本号但不更改结构的转换。