问题标签 [webassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
838 浏览

web - WebAssembly 程序会泄漏内存吗?

WebAssembly 程序以固定数量的虚拟内存开始,并且可以在运行时请求额外的内存。还鼓励他们丢弃未使用的物理页面。长时间运行、表现不佳的 WebAssembly 程序会泄漏内存吗?这最终会导致 WebAssembly 程序崩溃吗?

0 投票
1 回答
117 浏览

bash - 关于 Webassembly 入门教程的问题

我正在按照此处的指南创建 Hello World wasm 应用程序 (Mac OS)。我把所有事情都跟踪到了 T,并且确信git并且python在我的PATH,并且 90% 肯定cmake在我的路径中。安装时间很长,但进展顺利。但是,当我在终端中键入命令emcc hello.c -s WASM=1 -o hello.html时,我会收到消息-bash: emcc: command not found。也试过sudo了。

不确定是什么问题。我显然对wasm非常绿色。谢谢!

0 投票
2 回答
5066 浏览

javascript - WebAssembly 链接错误:导入对象字段“DYNAMICTOP_PTR”不是数字

以下 C 文件使用 emscripten 编译为 wasm:

没有问题。然后我让 webpack 将 wasm 文件(使用wasm-loader)加载为 UInt8Array:

我的 JS 代码然后调用以下内容:

并且实例化失败并出现以下错误:

wasm-loader 使用以下默认选项(importObject)WebAssembly.Instance(module, importObject)

难道我做错了什么 ?如何成功加载 wasm 代码?

编辑: 遵循@Ghillie 的建议,我尝试使用不同的优化标志编译 C 代码:

-O1, -02, -O3,-Os-Oz throw aLinkError: import object field 'memoryBase' is not a Number这是一个不同的错误,但不能解决问题。

编辑2:

仅添加-O1优化标志不起作用,但允许调试代码有不同的错误消息,因此@Ghillie 和我的答案都为我的问题提供了完整的解决方案。

0 投票
1 回答
1112 浏览

rust - 从 WebAssembly .wasm 模块获取 JavaScript 导入对象条目

我想了解 Rust 程序在编译为 wasm 文件时实际导出的内容,以便我可以为importObject实例化函数提供一个有效值:

据我了解,这样做的唯一方法是导出已编译代码的类似 s 语法的文件。我在他们的文档中或通过网络搜索找不到如何做到这一点。

0 投票
1 回答
261 浏览

javascript - Wasm 编译超出了在此上下文中提供的参数的内部限制

所以我正在尝试从 ArrayBuffer 创建一个 WebAssembly 模块。

C代码:

我像这样编译它:

我启动了一个本地 http 服务器。我尝试像这样在我的浏览器中加载它:

我收到以下错误:

Uncaught (in promise) RangeError: WebAssembly.Module(): Wasm 编译在此上下文中超出了 fetch.then.then.buff (:1:77) 处提供的参数的内部限制

我不知道如何解决这个错误,也无法通过网络搜索找到任何东西。

任何帮助表示赞赏

谢谢!

0 投票
1 回答
881 浏览

javascript - 为 WebAssembly 编译 Dlib

我正在尝试使用 emscripten 为 webassembly 构建 dlib,但我不知道该怎么做。

目前,dlib 生成可执行文件,而不是 emscripten 所需的字节码。有没有办法解决这个问题?

目前这就是我正在做的事情(从 dlib-19.4 文件夹中。

对于下一步,我需要输入一个字节码文件,但是,dlib 似乎只生成emcc命令不接受的可执行文件。

0 投票
1 回答
1786 浏览

c++ - 如何使用 SDL 将纹理加载到使用 emscripten 的 WebAssembly 项目?

我正在尝试使用 SDL 将纹理加载到我的应用程序中。当构建为本机应用程序时,它可以正常工作。但是当我使用 Emscripten 构建它时,无法加载纹理。

纹理图像的宽度为64像素,我可以通过打印出wSDL_Surface 实例的成员来验证。但是当我尝试在 WebAssembly 应用程序中打印出相同的成员时,它会产生5076 ...

装满 emscripten 时,图像是否会以某种方式“破碎”?

这是加载纹理的代码:

这是使用 Emscripten 构建 Web 应用程序的命令

我在启动 Web 应用程序时收到浏览器的错误消息是

webapp.js:9533 WebGL:INVALID_VALUE:texImage2D:宽度或高度超出范围

这是有道理的,因为图像的分辨率是如此疯狂......

0 投票
2 回答
3332 浏览

emscripten - 如何在 Emscripten 中使用 Boost 库

我有一个项目需要在浏览器中使用 websocket(或命名管道)与本机程序进行通信。(通过Webassembly可行吗?)

我已经用 Boost Library 编写了一个 c++ websocket,并希望将它编译为 wasm。

但我不知道如何将 Boost Lib(不仅仅是标题)与 Emscripten 一起使用。

我尝试通过以下方式构建 Boost Lib: Using Boost with Emscripten

但是,在使用 Emscripten 编译项目时,我应该如何链接 lib?

谢谢!

0 投票
2 回答
800 浏览

javascript - node.js 缓冲区和 WebAssembly 内存有什么区别?

我想知道是否可以 用 WebAssembly Memory替换 Node.js缓冲区内存分配?

如果是,有什么优势吗?

0 投票
1 回答
299 浏览

web - WebAssembly 数据类型中的 uint32 和 i32 有什么区别?

我不明白 uint32 和 i32 有什么区别。定义如下:

uint32

i32

另外,只有导师才有操作码,这里的“类型构造函数”是什么意思?