:wasm验证错误:偏移量为8:二进制版本0x1与预期版本0xd index.html:31:24不匹配

时间:2017-03-04 05:03:07

标签: c webassembly

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

{{1}}

我不知道导致此错误的原因。你能解释一下吗?

2 个答案:

答案 0 :(得分:1)

我已经回答了您的问题on github,请转发此处。

  

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

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

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

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

您可以指定您正在使用的浏览器版本以及您正在使用的工具链版本吗?不只是"开发者版"但确切的发布信息。

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

binaryen已更新为this commit中的0x1。从这里你可以找回你拥有的二进制版本。 Emscripten将该版本带入incoming分支this commit。您至少在此提交之后需要使用其传入分支来获取0x1二进制文件,标记为1.37.3。早期的Emscripten将生成0xD二进制文件。

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

答案 1 :(得分:0)

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

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

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