:wasmvalidation错误:偏移量为8:二进制版本0x1与预期版本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 

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

我已经在github上回答了你的问题,转发到这里。


我是中国男孩不擅长英语,如果我说错了,请不要记住。

你的语言非常好,不需要道歉! 我们中的许多人也是非英语母语人士


我相信你遇到的问题是WebAssembly 正在转向版本1 。 较旧的工具链和浏览器期望版本0xD作为预发布的东西。 他们现在期待版本0x1

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

您可以指定您正在使用的浏览器版本以及您正在使用的工具链版本吗? 不只是“开发人员版”,而是确切的发布信息。

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

binaryen在此提交中更新为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 

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