2

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

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

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

4

2 回答 2

1

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


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

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


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

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

你能指定你正在使用的浏览器版本,以及你正在使用的工具链版本吗?不仅仅是“开发者版”,还有确切的发布信息。

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

binaryen0x1此提交中更新为。从这里您可以恢复您拥有的二进制版本。Emscripten 通过这个 commit将该版本带入了它的incoming分支。您至少需要在此提交之后使用其传入分支来获取二进制文件,该文件标记为 1.37.3。早期的 Emscripten 将生成二进制文件。0x10xD

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

于 2017-03-04T08:09:28.407 回答
0

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

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

此解决方案仅适用于仅更改版本号而不更改结构的过渡。

于 2017-03-22T14:45:15.737 回答